进程间通信之“内存共享”的简单实现

1. 共享内存的有效特点:
  1. 是所有进程间通信最快的
  2. 不提供任何的同步,互斥机制,(用户可通过设置信号量来保证同步,互斥机制)
  3. 生命周期随内核
2. 创建共享内存

int shmget(key_t key, size_t size, int shmflg)
这里写图片描述
key : 可通过函数 key_t ftok( );申请到
size: 申请的大小,申请多少系统给多少,但系统内会以页的倍数批准
shmflg:权限

3. 命令行查看,删除共享内存

ipcs -m : 查看当前的共享内存
这里写图片描述
ipcrm -m 要删除的shmid : 删除指定共享内存
这里写图片描述

4. 接下来我们利用共享内存来实现进程间通信

共享内存实现进程间通信需要如下几个步骤:
1. 创建共享内存(物理地址);
2. 共享内存(物理地址)映射到虚拟地址(既然要通信,就必须是两个进程的通过页表分别映射到虚拟地中)
3. 最后就可通过各自的虚拟地址访问同一块虚拟地址,来实现进程间通信。
这里写图片描述
#####代码:
1. 创建共享内存(获取内存物理地址)
这里写图片描述
2. 对server端映射并读取内存数据
这里写图片描述
3. 对client端映射并写如数据
这里写图片描述

结果:
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值