我正在使用shm_open/mmap在OS X中为父进程和多个子进程之间共享内存。无论是父进程还是子进程都可以创建段,然后将标识名称传递给对方。我的理解是,当父进程退出时,必须对每个段调用shm_unlink来清理内存,否则共享内存会永久泄漏。
最初我从文档中的阅读认为,当没有映射它的进程存在时,共享段会被清除。然而实验表明这并非如此,必须有人明确地使用shm_unlink。
在OS X中是否有一种方法可以列出所有当前存在的共享内存段?问题在于父进程可能会崩溃,因此无法调用shm_unlink。在Linux中,我的解决方案是清除/dev/shm,但在OS X中,我需要一些列出打开的共享段的方式。
最初我从文档中的阅读认为,当没有映射它的进程存在时,共享段会被清除。然而实验表明这并非如此,必须有人明确地使用shm_unlink。
在OS X中是否有一种方法可以列出所有当前存在的共享内存段?问题在于父进程可能会崩溃,因此无法调用shm_unlink。在Linux中,我的解决方案是清除/dev/shm,但在OS X中,我需要一些列出打开的共享段的方式。