进程间通信之“内存共享”的简单实现
1. 共享内存的有效特点:
- 是所有进程间通信最快的
- 不提供任何的同步,互斥机制,(用户可通过设置信号量来保证同步,互斥机制)
- 生命周期随内核
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端映射并写如数据
结果: