今天继续研究posix IPC对象,这次主要是学习一下posix共享内存的使用方法,下面开始:

下面编写程序来创建一个共享内存:

编译运行:

那posix的共享内存存放在哪里呢?上节中学的posix的消息队列是在虚拟文件当中创建一个消息队列,需要我们手工将它挂载到某个目录下才能看到,同样的,posix共享内存也是需要将其挂载,只不过这个挂载操作是由系统完成的,而不用我们人工去操作了,已经挂载到了/dev/shm下了,如下:

接下来要介绍的函数为修改共享内存的大小:

【说明】:实际上ftruncate函数也能修改文件的大小。

下面修改程序来使用一下它:

编译运行:

其中struct stat的结构体为:

修改程序如下:

编译运行:

这个比较简单,实验一下:

编译运行:

现在我们已经创建了一个共享内存对象,那如何用它呢?则需要用到下面这个函数才行:

下面来使用一下,映射成功之后,先往内存中写入数据,然后再从内存中来读取:

接下来做一个容错处理:

实际上映射失败有专门的宏定义,从man帮助中可以得知:

所以,用它来代替-1程序会更加可读:

编译运行:

这是为什么呢?还是从man帮助中来寻找答案:

所以问题原因找到了,则修改一下打开方式既可:

再次编译运行:

有没有成功写入,则需要编写一个读取程序来验证一下:

编译运行:

实际上可以用过shell命令直接查看共享内存的内容:

好了,这次学的东西比较简单,下次继续~

最新文章

  1. 从源码角度理清memcache缓存服务
  2. iOS界面传值的方式(7种)
  3. Sharepoint 杂记
  4. OutSystems学习一,安装以及入门
  5. 【软件分析与挖掘】A Comparative Study of Supervised Learning Algorithms for Re-opened Bug Prediction
  6. FireDac 与数据库连接时字符集及对应的字段类型问题
  7. 解决使用IIS5.0配置的FTP服务器,客户端浏览器访问时无法获取目录列表的问题。
  8. PLSQL_性能优化系列16_Oracle Tuning Analyze优化分析
  9. 【转】html input radio取得被选中项的value
  10. AngularJS2学习
  11. nginx 配置 开发
  12. [ACdream]瑶瑶带你玩激光坦克
  13. Play-With-Docker在chrome上的插件
  14. Jstorm与RocketMQ整合
  15. 显示开机信息-dmesg
  16. get UI URL
  17. Java14-java语法基础(十三)接口
  18. Python Web Server Gateway Interface -- WSGI
  19. [aaronyang原创] Mssql 一张表3列的sql面试题,看你sql学的怎么样
  20. QGIS 2014年7月18日版本

热门文章

  1. 【GStreamer开发】GStreamer基础教程12——流
  2. publish dotnet core angular spa app to docker
  3. 安装AWX
  4. Deepin安装JavaFX
  5. maven profiles多环境配置
  6. (一)Shiro,久闻其名,而今初相识
  7. stm32片上ADC转换实验
  8. AJAX一些注释掉的语句
  9. vue项目过程的理解: main.js文件理解 router.js文件理解 以及组件 路由 等之间的关系
  10. mysql创建唯一索引UNIQUE INDEX,以及报错“#失败原因: [Execute: Duplicate entry '733186700' for key 'uniq_video_id_index']”