我在用shmget
, shmat
and shmctl
分别获取和创建共享内存段,将其附加到进程地址空间中并删除它。
我想知道进程是否仍然可以使用共享内存段,即使它已被分离并要求使用删除
shmctl(id, IPC_RMID, ...)
在一个过程中。
我无法从手册页获取信息:
IPC_RMID
标记要销毁的段。该段只有在最后一个进程将其分离后才会真正被销毁(即,当shm_nattch
相关结构的成员shmid_ds
为零)。调用者必须是所有者或创建者,或者具有特权。如果一个段已被标记为销毁,则(非标准)SHM_DEST
的旗帜shm_perm.mode
相关数据结构中的字段通过检索IPC_STAT
将被设置。
在 Linux 上,即使已标记为删除,也可以附加共享内存段。但是,POSIX.1-2001 没有指定此行为,并且许多其他实现也不支持它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)