首页 > 解决方案 > 在 Linux 中使用 C 共享内存

问题描述

shm_unlink即使当前有其他进程打开共享内存,使用是否安全?

例如:

处理 Bshm_open然后处理 A shm_unlink。流程B可以吗?

标签: clinuxshared-memory

解决方案


是的,如果另一个进程打开它,调用 shm_unlink 是安全的。根据 shm_unlink 的手册页:

shm_unlink() 的操作类似于 unlink(2):它删除共享内存对象名称,并且一旦所有进程都取消映射该对象,就会取消分配并销毁相关内存区域的内容。在成功 shm_unlink() 之后,尝试 shm_open() 具有相同名称的对象将失败(除非指定了 O_CREAT,在这种情况下会创建一个新的、不同的对象)。


推荐阅读