shm
2024-10-21 06:34:01
进程间共享内存访问及读写
1. 进程间共享内存相关linux_C函数
基本解释:
- shmget函数是系统新建并获取共享物理内存的函数
- shmat韩式是系统将物理的共享内存映射到当前进程的虚拟空间中,并将映射的虚拟内存地址返回
- shmdt函数是系统将映射的虚拟内存地址表清除,当前进程无法访问这一块物理意义上的共享内存
- shmctl函数是对物理的共享内存块进行操作
2. 进程间共享内存基本流程
进程1
- 进程1通过shmget函数新建一块物理的共享内存,并获取到这块内存在该系统中的唯一shm_id
- 紧接着调用shmat函数对这块唯一shm_id的物理共享内存映射到当前进程的虚拟空间地址中,并返回对应的虚拟空间地址
- 我们可以利用该地址对此物理的共享内存进行读/写
- 读写完毕后,shmdt函数对映射到进程虚拟空间的地址进行销毁,当前进程无法再访问该物理空间
- shmctl对实际的物理共享内存空间进行删除
进程2
- 在物理的共享内存删除前,使用shmat函数,我们可以对该shm_id进行映射到进程2的虚拟空间中,以获取实际物理共享内存的虚拟映射地址,然后对该物理空间进行读/写
- 读写完毕后,同样的调用shmdt函数对映射到进程2的共享内存虚拟空间地址进行毁
keyword
- 进程间的通讯(父子进程,netlink,socket等等)如何传递shm_id是关键,该shm_id在系统中唯一
3. demo code
//pg:有时间再写,哈哈哈
最新文章
- maven打包jar包
- jQuery--选择器总结
- 初学Scala
- asp.net 站点重启
- eclipse无法导入Android工程的现象与解决办法
- 使用C# WinForm窗体制作经理评分项目 ——S2 2.2
- 利用Jquery实现http长连接(LongPoll) {转}
- 【剑指offer 面试题34】丑数
- POJ3083Children of the Candy Corn
- 重新想象 Windows 8 Store Apps (25) - 选取器: 文件选取窗口, 文件夹选取窗口, 文件保存窗口
- Android网络开发之Volley--Volley基本用法ImageRequest(三)
- AsyncTask onPreExecute方法用于在执行后台任务前做一些UI操作
- GitHub 系列之「怎样使用 GitHub?」
- 43. Multiply Strings字符串相乘
- 初学Python——列表生成式、生成器和迭代器
- springboot jar包运行中获取资源文件
- poj1637 Sightseeing tour(混合图欧拉回路)
- Unicode转字符串
- IntelliJ IDEA远程调试运行中的JAVA程序/项目
- .NET Core 项目经验总结:项目结构介绍 (一)