免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 10900 | 回复: 6
打印 上一主题 下一主题

共享内存创建失败(已经存在)时如何获得已创建的共享内存? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-11-11 15:01 |只看该作者 |倒序浏览
如果共享内存创建失败,shmget返回-1,errno为EEXIST表示共享内存已经被创建,那么如何获得这个已经创建的共享内存进行使用呢?

论坛徽章:
0
2 [报告]
发表于 2008-11-11 15:08 |只看该作者
shm与一个key关联的吧,用shm不多,我一直用mmap.

论坛徽章:
0
3 [报告]
发表于 2008-11-11 16:50 |只看该作者
原帖由 converse 于 2008-11-11 15:08 发表
shm与一个key关联的吧,用shm不多,我一直用mmap.

知道了,shmget函数还可以直接使用已经创建的共享内存,如果参数shmflag不为IPC_EXCL,当发现已经创建的好的,调用不会失败!

论坛徽章:
0
4 [报告]
发表于 2008-11-11 16:50 |只看该作者
原帖由 converse 于 2008-11-11 15:08 发表
shm与一个key关联的吧,用shm不多,我一直用mmap.

mmap有什么优势?跟shm有什么区别?

论坛徽章:
0
5 [报告]
发表于 2008-11-11 17:08 |只看该作者

  1. flags
  2.      Specifies the creation options. Possible values are:

  3.      IPC_CREAT
  4.              If the specified key does not exist, the shmget() function
  5.              creates a shared memory identifier for the specified key.

  6.              If the specified key does exist, and IPC_EXCL is not set, the
  7.              shared memory identifier for the specified key is returned.

  8.              If the specified key does exist and IPC_EXCL is set, the
  9.              shmget() function fails and returns an error.
复制代码

看看

论坛徽章:
0
6 [报告]
发表于 2008-11-11 17:24 |只看该作者
原帖由 什么名 于 2008-11-11 16:50 发表

mmap有什么优势?跟shm有什么区别?


shm 是 shared memory 共享内存.
mmap 是文件处理的一个特殊案例, 存储的介质是文件, 但你可以像内存一样使用它... 如果不是频繁调用(反复mmap和mnumap)效率非常好

论坛徽章:
0
7 [报告]
发表于 2008-11-12 23:44 |只看该作者
原帖由 什么名 于 2008-11-11 16:50 发表

mmap有什么优势?跟shm有什么区别?


利用mmap得到的共享内存有引用计数,相关进程都munmap后,内核会自动释放资源。
就这一条优势就足够了!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP