进程间共享内存访问及读写

1. 进程间共享内存相关linux_C函数

基本解释:

  • shmget函数是系统新建并获取共享物理内存的函数
  • shmat韩式是系统将物理的共享内存映射到当前进程的虚拟空间中,并将映射的虚拟内存地址返回
  • shmdt函数是系统将映射的虚拟内存地址表清除,当前进程无法访问这一块物理意义上的共享内存
  • shmctl函数是对物理的共享内存块进行操作

2. 进程间共享内存基本流程

进程1

  1. 进程1通过shmget函数新建一块物理的共享内存,并获取到这块内存在该系统中的唯一shm_id
  2. 紧接着调用shmat函数对这块唯一shm_id的物理共享内存映射到当前进程的虚拟空间地址中,并返回对应的虚拟空间地址
  3. 我们可以利用该地址对此物理的共享内存进行读/写
  4. 读写完毕后,shmdt函数对映射到进程虚拟空间的地址进行销毁,当前进程无法再访问该物理空间
  5. shmctl对实际的物理共享内存空间进行删除

进程2

  1. 在物理的共享内存删除前,使用shmat函数,我们可以对该shm_id进行映射到进程2的虚拟空间中,以获取实际物理共享内存的虚拟映射地址,然后对该物理空间进行读/写
  2. 读写完毕后,同样的调用shmdt函数对映射到进程2的共享内存虚拟空间地址进行毁

keyword

  1. 进程间的通讯(父子进程,netlink,socket等等)如何传递shm_id是关键,该shm_id在系统中唯一

3. demo code

//pg:有时间再写,哈哈哈

最新文章

  1. maven打包jar包
  2. jQuery--选择器总结
  3. 初学Scala
  4. asp.net 站点重启
  5. eclipse无法导入Android工程的现象与解决办法
  6. 使用C# WinForm窗体制作经理评分项目 ——S2 2.2
  7. 利用Jquery实现http长连接(LongPoll) {转}
  8. 【剑指offer 面试题34】丑数
  9. POJ3083Children of the Candy Corn
  10. 重新想象 Windows 8 Store Apps (25) - 选取器: 文件选取窗口, 文件夹选取窗口, 文件保存窗口
  11. Android网络开发之Volley--Volley基本用法ImageRequest(三)
  12. AsyncTask onPreExecute方法用于在执行后台任务前做一些UI操作
  13. GitHub 系列之「怎样使用 GitHub?」
  14. 43. Multiply Strings字符串相乘
  15. 初学Python——列表生成式、生成器和迭代器
  16. springboot jar包运行中获取资源文件
  17. poj1637 Sightseeing tour(混合图欧拉回路)
  18. Unicode转字符串
  19. IntelliJ IDEA远程调试运行中的JAVA程序/项目
  20. .NET Core 项目经验总结:项目结构介绍 (一)

热门文章

  1. 阿里百秀后台管理项目笔记 ---- Day04
  2. 【MRTK】HoloLens开发基础项目设置
  3. 【红米note7开bl锁】快乐开锁人
  4. ‘mongo‘不是内部或外部命令,也不是可运行的程序或批处理文件
  5. C# winform 一个窗体需要调用自定义用户控件的控件名称
  6. 微信小程序自定义导航栏机型适配
  7. metasploit2-practice
  8. mssql 常用sql 语句
  9. 关于HTML5中Video标签播放问题
  10. Cesium渲染模块之Buffer