【发布时间】:2012-11-02 21:35:16
【问题描述】:
是否有任何方法,无论是否特定于 linux,在没有进程使用它们时删除 posix 共享内存段(通过shm_open() 获得)。即对它们进行引用计数,并在引用变为 0 时让系统删除它们
几点说明:
如果程序崩溃,则无法建立 atexit 处理程序来删除它们。
目前,linux特有的方式,我在段名中嵌入了pid,并尝试通过在外部程序中走/dev/shm来找到未使用的段。这样做的缺点是必须定期在外部以相当骇人的方式清理它们。
由于程序可以运行多个副本,因此为程序在启动时重用的段使用明确定义的名称是不可行的。
【问题讨论】:
-
您是在问是否有系统库方法来解决这个问题,而不是手动完成?
-
您可以使用 gdb 来调试您的应用程序,使其不会崩溃?这缓解了崩溃的应用程序无法自行清理的问题......
标签: c linux shared-memory