我正在使用 ftok/shmget/shmat/shmdt 函数在 Linux 上创建、写入和读取共享段。
如果我写入一个程序中的段,然后退出,然后稍后从另一个程序中读取该段,我会惊讶地发现数据仍然存在。
我预计当共享一个段的最后一个进程执行 shmdt 时,该段将被释放。
我可以依赖这种行为吗?或者它类似于在 free()'ing 后继续使用指针吗?
共享内存区域将一直保留,直到通过以下方式删除为止:shmctl(shmid,IPC_RMID,...)
[或系统重新启动]。这将在每个进程完成后生效shmdt
[或终止]。
语义与文件非常相似。shmat
就好像open
. shmdt
就好像close
以及[以上]shmctl
就好像unlink
.
如果您关闭一个文件,您希望它一直存在直到被专门删除,不是吗?因此,共享内存段的操作类似
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)