首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Linux上共享内存的寿命是多少?

在Linux上共享内存的寿命是多少?
EN

Stack Overflow用户
提问于 2016-02-27 06:25:52
回答 2查看 2K关注 0票数 5

我使用ftok/shmget/shmat/shmdt函数创建、写入和读取Linux上的共享段。

如果我写到一个程序中的段,然后退出,然后再从另一个程序中读取该段,我会惊讶地发现数据仍然存在。

我原以为,当最后一个共享一个段的进程做了一个shmdt时,这个段将是免费的。

我能依靠这种行为吗?还是类似于在空闲()之后继续使用指针?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-02-27 06:53:15

共享内存区域一直保持到通过shmctl(shmid,IPC_RMID,...)或系统重新启动删除为止。这将在每个进程完成shmdt或终止后生效。

语义与文件非常相似。shmat就像openshmdt类似于close,而上面的shmctl类似于unlink

如果您关闭一个文件,您会希望它坚持到具体删除,不是吗?因此,共享内存段的操作类似。

票数 4
EN

Stack Overflow用户

发布于 2016-02-27 06:46:28

shmdt只分离内存,不对数据段执行擦除/覆盖操作。直到其他进程映射并再次使用它,数据才会持续。

此外,您应该使用更新的、符合POSIX标准的mmap

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35666526

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档