是否存在任何方法(无论是 Linux 特定的还是非特定的),可以使 POSIX 共享内存段(使用 shm_open()
获得)在没有进程使用它们时被删除。即,将它们引用计数,并在引用计数变为 0 时系统删除它们。
以下是一些注意事项:
建立一个 atexit 处理程序来删除它们,在程序崩溃时不起作用。
目前,Linux 特定的方法是在段名称中嵌入 pid,并尝试在外部程序中遍历 /dev/shm 找到未使用的段。这种方法的缺点是需要以相当 hackish 的方式定期在外部进行清理。
由于程序可以运行多个副本,因此在启动时为段使用一个明确定义的名称并不可行。