我正在使用shmget
,shmat
和shmctl
来分别获取和创建共享内存段,将其附加到进程地址空间并将其删除。
我想知道进程是否仍然可以使用共享内存段,即使它已被分离并要求使用
删除shmctl(id, IPC_RMID, ...)
在一个过程中。
我无法从手册页获取信息:
IPC_RMID
标记要销毁的细分受众群。该段仅在最后一个进程分离后才被实际销毁(即,当关联结构shm_nattch
的{{1}}成员为零时)。呼叫者必须是所有者或创建者,或具有特权。如果某个段已标记为要销毁,则shmid_ds
的(非标准)SHM_DEST
标记 将设置由shm_perm.mode
检索的关联数据结构中的字段。
答案 0 :(得分:1)
在Linux上,即使已经标记为要删除,也可以附加共享内存段。但是,POSIX.1-2001未指定此行为,许多其他实现不支持它。