shm

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

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

img

基本解释:

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在系统中唯一

img

3. demo code

//pg:有时间再写,哈哈哈
posted @ 2023-02-08 19:04  天纵之才  阅读(100)  评论(0)    收藏  举报