linux网络编程之posix共享内存
2024-10-20 16:38:56
今天继续研究posix IPC对象,这次主要是学习一下posix共享内存的使用方法,下面开始:
下面编写程序来创建一个共享内存:
编译运行:
那posix的共享内存存放在哪里呢?上节中学的posix的消息队列是在虚拟文件当中创建一个消息队列,需要我们手工将它挂载到某个目录下才能看到,同样的,posix共享内存也是需要将其挂载,只不过这个挂载操作是由系统完成的,而不用我们人工去操作了,已经挂载到了/dev/shm下了,如下:
接下来要介绍的函数为修改共享内存的大小:
【说明】:实际上ftruncate函数也能修改文件的大小。
下面修改程序来使用一下它:
编译运行:
其中struct stat的结构体为:
修改程序如下:
编译运行:
这个比较简单,实验一下:
编译运行:
现在我们已经创建了一个共享内存对象,那如何用它呢?则需要用到下面这个函数才行:
下面来使用一下,映射成功之后,先往内存中写入数据,然后再从内存中来读取:
接下来做一个容错处理:
实际上映射失败有专门的宏定义,从man帮助中可以得知:
所以,用它来代替-1程序会更加可读:
编译运行:
这是为什么呢?还是从man帮助中来寻找答案:
所以问题原因找到了,则修改一下打开方式既可:
再次编译运行:
有没有成功写入,则需要编写一个读取程序来验证一下:
编译运行:
实际上可以用过shell命令直接查看共享内存的内容:
好了,这次学的东西比较简单,下次继续~
最新文章
- 从源码角度理清memcache缓存服务
- iOS界面传值的方式(7种)
- Sharepoint 杂记
- OutSystems学习一,安装以及入门
- 【软件分析与挖掘】A Comparative Study of Supervised Learning Algorithms for Re-opened Bug Prediction
- FireDac 与数据库连接时字符集及对应的字段类型问题
- 解决使用IIS5.0配置的FTP服务器,客户端浏览器访问时无法获取目录列表的问题。
- PLSQL_性能优化系列16_Oracle Tuning Analyze优化分析
- 【转】html input radio取得被选中项的value
- AngularJS2学习
- nginx 配置 开发
- [ACdream]瑶瑶带你玩激光坦克
- Play-With-Docker在chrome上的插件
- Jstorm与RocketMQ整合
- 显示开机信息-dmesg
- get UI URL
- Java14-java语法基础(十三)接口
- Python Web Server Gateway Interface -- WSGI
- [aaronyang原创] Mssql 一张表3列的sql面试题,看你sql学的怎么样
- QGIS 2014年7月18日版本
热门文章
- 【GStreamer开发】GStreamer基础教程12——流
- publish dotnet core angular spa app to docker
- 安装AWX
- Deepin安装JavaFX
- maven profiles多环境配置
- (一)Shiro,久闻其名,而今初相识
- stm32片上ADC转换实验
- AJAX一些注释掉的语句
- vue项目过程的理解: main.js文件理解 router.js文件理解 以及组件 路由 等之间的关系
- mysql创建唯一索引UNIQUE INDEX,以及报错“#失败原因: [Execute: Duplicate entry '733186700' for key 'uniq_video_id_index']”