【发布时间】:2020-10-16 04:49:41
【问题描述】:
即使当前有其他进程打开共享内存,使用shm_unlink是否安全?
例如:
进程 B shm_open 然后进程 A shm_unlink。流程B可以吗?
【问题讨论】:
标签: c linux shared-memory
即使当前有其他进程打开共享内存,使用shm_unlink是否安全?
例如:
进程 B shm_open 然后进程 A shm_unlink。流程B可以吗?
【问题讨论】:
标签: c linux shared-memory
是的,如果另一个进程打开了它,调用 shm_unlink 是安全的。根据 shm_unlink 的手册页:
shm_unlink() 的操作类似于 unlink(2):它删除一个 共享内存对象名称,并且,一旦所有进程都取消映射 对象,取消分配并销毁关联的内容 内存区域。成功 shm_unlink() 后,尝试 shm_open() 同名对象将失败(除非指定了 O_CREAT, 在这种情况下,会创建一个新的、不同的对象)。
【讨论】: