gpt4 book ai didi

macos - OS X 共享内存清理

转载 作者:行者123 更新时间:2023-12-01 09:30:04 26 4
gpt4 key购买 nike

我通过在 OS X 中使用 shm_open/mmap 分配共享内存段来在父进程和多个子进程之间共享内存。父进程或子进程都可以创建该段,然后将标识名称传达给其中之一。我的理解是,当它退出清理内存时,父级必须在这些段中的每一个上调用 shm_unlink ,否则共享内存将永久泄漏。

我最初从阅读文档中想到的是,当没有映射的进程处于事件状态时,共享段会被清理。然而,实验表明情况并非如此,必须有人明确使用 shm_unlink。

OS X 中有没有办法列出所有当前存在的共享内存段? 问题是父进程可能会崩溃,因此没有机会调用 shm_unlink。在 Linux 中,我的解决方案是清除/dev/shm,但在 OS X 中,我需要某种方式列出打开的共享段。

最佳答案

答案似乎是:你不能。

首先看这个question ,它引用了内核中的注释:

  • TODO:
    (2) Need to export data to a userland tool via a sysctl. Should ipcs(1) and ipcrm(1) be expanded or should new tools to manage both POSIX kernel semaphores and POSIX shared memory be written?


另见此 post在 Apple 邮件列表 unix-porting 上:
There is no "picps"/"picprm" utility, you are expected to remember what 
you create and clean up afterward, or clean up first thing on
restart if you crash a lot, there is nothing exposed directly
in the filesystem namespace, and you are expected to do
the shm_unlink because it is a rendezvous for potentially a
lot of unrelated programs.

关于macos - OS X 共享内存清理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18855230/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com