社区
C语言
帖子详情
共享内存的初级菜鸟问题(在线等,谢谢)
joseph_hsw
2014-03-04 04:19:17
在多进程程序中使用Posix共享内存的时候。
每一个进程使用某同一块共享内存时候都必须完成以下步骤吗?
1.shm_open
2.ftruncate
3.mmap
如果使用完,是否需要通过
munmap
来解除文件映射呢?还是说直到进程关闭的时候才去munmap?
...全文
187
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呢?
菜鸟
学习
初级
教程-----强烈推荐(看完后成黑客拉)
菜鸟
学习黑帽子
初级
教程-----强烈推荐(看完后成黑客拉)
逸学java【
初级
菜鸟
篇】7.4静态变量和静态方法
成员变量的分类 静态成员变量:static修饰成员变量表示该成员变量只在内存中只存储一份,可以被共享访问、修改。 实例成员变量:没有static修饰的成员变量(回想一下我们之前学的),他的使用方法是对象.实例成员...
Java
初级
面试题
初级
面试题,比较粗糙,可以作为参考的大致方向
Java
初级
程序员面试总结(一)--JVM篇
Java
初级
程序员面试总结(一) 引言: 我是一个
菜鸟
程序员,坐标HZ,最近在准备面试,所以想写点博客进行总结. Q1: JVM你了解么 Answer: JVM分为5个区:栈,堆,方法区,本地方法区,程序计数器.在JDK1.8时,堆的永久代被转移到...
逸学java【
初级
菜鸟
篇】11.多线程【多方位详解】
hi,我是逸尘,一起学java吧 目标(任务驱动) 略述概述多线程一隅 线程 进程 在提到线程是什么之前我们还需要提到另一个名词 他就是进程 进程:是指一个内存中运行的应用程序,每个进程都有⼀个独立的内存空间,⼀...
C语言
69,371
社区成员
243,080
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章