同是共享内存,shm_open与shmget有什么差异?
因为工作需要,这几天研究了一下共享内存。搞得自己也有点糊涂。糊涂在哪里?有两个共享内存的东西。仔细研究了之后,初步结论如下。
- shm_open
把共享内存以文件方式打开,这样就可以直接向文件中写入数据了。有以下注意事项:
- 从了解的资料来看,硬盘可能有对应的文件。如果是真的,数据量大的时候,就存在一个性能问题。
- 进程甲写数据,进程乙可能分两次收到。
- 一个进程写,另外两个进程是否都能收到?
- 如果使用select(),理论上不需要加锁。
有人问,用管道是不是能实现同样功能?如果是一对一,管道可以;如果是多对一,还是这个更好。因为工作情况,没有更深入的研究。
- shmget
就是得到一个内存区, KEY相同情况下,各进程访问的是同一块内存。造型为指定类型后,直接操作访问。注意:
- 访问进程间要加锁。这个锁也必须是共享内存锁。参考吾其他博文。
- 写数据时,结构体中的缓冲区必须是已经声明足够大小,而不是一个指针需要时malloc。因为malloc的地址,其他进程访问不到。
同是共享内存,shm_open与shmget有什么差异?相关推荐
- 李治军老师操作系统实验6----地址映射与共享-共享内存函数(shmget、shmat、shmctl)
本文参考https://blog.csdn.net/laoshuyudaohou/article/details/103843023 一.实验目标 深入理解操作系统的段.页式内存管理,深入理解段表.页 ...
- Linux进程间通信:共享内存函数(shmget、shmat、shmdt、shmctl)及其范例
共享内存函数由shmget.shmat.shmdt.shmctl四个函数组成.下面的表格列出了这四个函数的函数原型及其具体说明. 1. shmget函数原型 shmget(得到一个共享内存标识符或 ...
- C语言之共享内存shm_open(二十五)
在多个进程之间交换数据,在多个进程之间交换数据,最高效的方法莫过于共享内存. linux共享内存是通过tmpfs这个文件系统来实现的,tmpfs文件系的目录为/dev/shm,/dev/s ...
- 共享内存函数(shmget、shmat、shmdt、shmctl)
一:shmget函数:得到一个共享内存标识符或创建一个共享内存对象 1,头文件: #include <sys/ipc.h>#include <sys/shm.h> 2,函数说明 ...
- C语言之共享内存之shmget进程间通信(二十三)
一. shm_open()和shmget()区别 1.shm_open主要打开一个共享内存用户进程间交换大量数据. 用法: 把共享内存以文件方式打开,这样就可以直接向文件中写入数据. 2.shmget ...
- shmget() -- 建立共享内存[zz] - [LINUX]
版本声明:此文章来源于http://leezen.blogbus.com/logs/19564086.html,如果还想转载请看他的版本声明 版权声明:转载时请以超链接形式标明文章原始出处和作者信息及 ...
- shmget - 共享内存
一. 共享内存介绍 系统V共享内存指的是把所有共享数据放在共享内存区域(IPC shared memory region),任何想要访问该数据的 进程都必须在本进程的地址空间新增一块内存区域,用来映射 ...
- 共享内存(shmget,shmat,shmdt,shmctl)
共享内存shmgetshmatshmdtshmctl shmget int shmget(key_t key, size_t size, int flag); key: 标识符的规则 size:共享存 ...
- Linux进程间通信源码剖析,共享内存(shmget函数详解)
转至:http://blog.csdn.net/lanmanck/article/details/6092995 shmget int shmget(key_t key, size_t size, i ...
- 共享内存 shmget函数
内核共享内存 shmget 头文件 函数 #include <sys/ipc.h> #include <sys/shm.h>// 得到一个共享内存标识符或创建一个共享内存对象并 ...
最新文章
- 2017-2018-1 20155226《信息安全系统设计基础》第2周学习总结
- 千家BBS系列-技术宝典(免费下载软件)
- 初学__Python——Python代码的组织形式
- Keras .ImageDataGenerator图像增强用法大全以及如何和模型结合起来(有代码)
- 多层架构模型中的BLL 与 Model的解释
- 【转载】:单例设计模式
- java的字符定义_Java字符串定义及常用方法
- python中面向对象的缺点_面向对象中的多态在 Python 中是否没有什么意义?
- POJ NOI MATH-7653 地球人口承载力估计
- 计算机虚拟仪器技术与测试技术相关的概念,虚拟测试技术概念辨析.pdf
- Atitit 组织软资产建设 知识管理 经济学架构体系
- OpenCv特征匹配
- 常见查找算法--(快速查找或二分查找)
- 推荐系统三十六式:矩阵分解 总结
- 为什么Java编程语言用一种咖啡名做名字
- 你的程序要读入一系列正整数数据,输入-1表示输入结束,-1本身不是输入的数据。程序输出读到的数据中的奇数和偶数的个数。
- 9104年了,你还中毒?—— Synaptics.exe 中毒小记
- B4A 饺子播放器超简插件
- python星座分析
- 安卓rtmp推流app_视频直播app开发只需三步就可完成