4

我正在使用shmget,shmatshmctl分别获取和创建一个共享内存段,将其附加到进程地址空间并删除它。

我想知道进程是否仍然可以使用共享内存段,即使它已被分离并要求使用

shmctl(id, IPC_RMID, ...)

在一个过程中。

我无法从手册页获取信息:

IPC_RMID标记要销毁的段。该段只有在最后一个进程将其分离后才会真正被销毁(即,当shm_nattch关联结构的成员shmid_ds为零时)。调用者必须是所有者或创建者,或者具有特权。如果段已被标记为销毁,则将设置 检索到的相关数据结构SHM_DEST中字段的(非标准)标志。shm_perm.modeIPC_STAT

4

1 回答 1

1

在 Linux 上,可以附加共享内存段,即使它已被标记为删除。但是,POSIX.1-2001 没有指定这种行为,并且许多其他实现不支持它。

于 2012-12-19T08:44:50.940 回答