社区
Linux/Unix社区
帖子详情
linux下用mmap实现共享内存的时候open和shm_open有什么区别
wind19
2013-09-23 07:37:03
open一个文件 和 shm_open一个文件,然后用mmap把它映射入内存,两者之间有什么区别。 我只知道shm_open打开的文件在 /dev/shm下面,其他没看出来,性能上有区别吗?
另外,我看到说 只有调用munmap 或 msync的时候才会把数据写入到磁盘,但我没有调用这两个函数之前让程序sleep,然后用cat打开文件也能看到数据,就是说数据已经写入磁盘了。 那么这样性能不是很差吗。
...全文
2383
7
打赏
收藏
linux下用mmap实现共享内存的时候open和shm_open有什么区别
open一个文件 和 shm_open一个文件,然后用mmap把它映射入内存,两者之间有什么区别。 我只知道shm_open打开的文件在 /dev/shm下面,其他没看出来,性能上有区别吗? 另外,我看到说 只有调用munmap 或 msync的时候才会把数据写入到磁盘,但我没有调用这两个函数之前让程序sleep,然后用cat打开文件也能看到数据,就是说数据已经写入磁盘了。 那么这样性能不是很差吗。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
YouCompleteMe
2014-10-11
打赏
举报
回复
/dev/shm 目录下的tmpfs文件系统是基于内存的文件系统
sjjwan
2014-05-04
打赏
举报
回复
2
对于mmap函数而言,shm_open与open函数打开一个文件没有什么区别,只是shm_open函数是在/dev/shm目录上生成一个文件,而且会校验该目录下是不是挂载了tmpfs文件系统,如果不是也不能正常打开的。所以一般还是用shm_open函数更规范一些,因为这个文件存在tmpfs文件系统下,在不用的情况系统会自动删除掉。
wind19
2013-09-26
打赏
举报
回复
版主啊,鸡冻一下先。 但是我没有设置share,在程序退出之后,还是可以用用cat看到文件内容。 还有,用shm_open 和 open打开一个文件,对于共享内存有区别吗?
qiyu1988
2013-09-24
打赏
举报
回复
shm_open内存共享主要功能还是作为一种便捷的ipc通信机制
qq120848369
2013-09-24
打赏
举报
回复
不设置share就不会写盘。
wind19
2013-09-24
打赏
举报
回复
open打开的不是也可以进行内存共享吗? 因为 mmap也会把它映射进内存。 另外,有没有什么办法让mmap不写磁盘,即便程序退出也不写。
Carl_CCC
2013-09-23
打赏
举报
回复
shm_open主要打开一个共享内存用户进程间交换大量数据 mmap可以用于交换数据,也可以映射文件,很方便的。 linux操作系统写文件没你想象那么简单,有缓存机制的,你cat文件的内容不一定是来自硬盘。 而mmap除了msync,munmap也会在适当时机写入硬盘。
IPC4J进程间内存共享库_基于inotify事件通知机制与
mmap
内存映射及
shm
_
open
共享内存
API构建的半双工高性能跨进程通信框架_
实现
Linux
环境下与发行版无关的进程.zip
IPC4J进程间内存共享库_基于inotify事件通知机制与
mmap
内存映射及
shm
_
open
共享内存
API构建的半双工高性能跨进程通信框架_
实现
Linux
环境下与发行版无关的进程.zip
shm
_
linux
共享句柄_
在
linux
mfd_create 方式
共享内存
方法,更有利于效率。
XXX_16xxx65_xxx898_
共享内存
_xxxbb12345_内存共享_
C++ 内存共享 实例
进程间通讯---
共享内存
的使用方法
本代码是进程间通讯的一种方法---
共享内存
的使用方法。 通讯的发送端及接收端的两块代码。
linux
内存共享源代码
在
Linux
利用内存共享
实现
两个shell窗口的通信
Linux/Unix社区
23,223
社区成员
74,536
社区内容
发帖
与我相关
我的任务
Linux/Unix社区
Linux/Unix社区 应用程序开发区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章