社区
C语言
帖子详情
共享内存的初级菜鸟问题(在线等,谢谢)
joseph_hsw
2014-03-04 04:19:17
在多进程程序中使用Posix共享内存的时候。
每一个进程使用某同一块共享内存时候都必须完成以下步骤吗?
1.shm_open
2.ftruncate
3.mmap
如果使用完,是否需要通过
munmap
来解除文件映射呢?还是说直到进程关闭的时候才去munmap?
...全文
201
6
打赏
收藏
共享内存的初级菜鸟问题(在线等,谢谢)
在多进程程序中使用Posix共享内存的时候。 每一个进程使用某同一块共享内存时候都必须完成以下步骤吗? 1.shm_open 2.ftruncate 3.mmap 如果使用完,是否需要通过 munmap 来解除文件映射呢?还是说直到进程关闭的时候才去munmap?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
jianpanlanyue
2014-03-08
打赏
举报
回复
是的。 用完后,是需要unmap的。 多个进程访问共享内存,内核是用引用计数去标记这个共享内存对象的。 每个进程用完后,unmap一下,这个引用计数就递减1,直到0的时候,意味着没有任何对象再去访问这个共享内存对象,内核就去回收资源。 当然了,一个进程如果没有unmap的话,进程结束后,操作系统在回收进程资源的时候,会去检查其内核对象引用表,发现其还持有一个共享内存对象的时候,也会主动将引用计数减一。但程序中申请、释放最好做到配对使用,养成好的代码风格和习惯。
joseph_hsw
2014-03-07
打赏
举报
回复
引用 4 楼 njynjylq 的回复:
一般如果多个进程使用共享内存的话,在所有进程,都是用完共享内存之后,就可以断开映射了
每一个进程,每一次使用都是需要 1.shm_open 2.ftruncate 3.mmap 4.munmap 这四个步骤吗?
joseph_hsw
2014-03-05
打赏
举报
回复
没人回????
njynjylq
2014-03-05
打赏
举报
回复
一般如果多个进程使用共享内存的话,在所有进程,都是用完共享内存之后,就可以断开映射了
njynjylq
2014-03-05
打赏
举报
回复
共享内存使用完后,需要断开映射
joseph_hsw
2014-03-04
打赏
举报
回复
mmap可以不可以理解为new,而munmap理解为delete呢?
有哪些必知必会的react面试题详解(
初级
菜鸟
).pdf
有哪些必知必会的react面试题详解(
初级
菜鸟
).pdf
自己整理的react面试题精选(
初级
菜鸟
).pdf
自己整理的react面试题精选(
初级
菜鸟
).pdf
不可错过的react面试题pdf下载高清(
初级
菜鸟
).pdf
不可错过的react面试题pdf下载高清(
初级
菜鸟
).pdf
「务必收藏」React.js 面试题整理收藏(
初级
菜鸟
).pdf
「务必收藏」React.js 面试题整理收藏(
初级
菜鸟
)
经典面试题react面试题不轻易分享出来!(
初级
菜鸟
).pdf
经典面试题react面试题不轻易分享出来!(
初级
菜鸟
).pdf
C语言
70,040
社区成员
243,246
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章