使用信号,解决两个进程之间共享内存读写问题(写一次,读一次)

一、引导

 1、 共享内存也是属于IPC对象,所以使用之前必须申请key值。

 2、 共享内存作用范围以及机制是如何?

作用范围:在linux下任意两个进程。

机制:任意两个进程通过申请key值,ID号,共享内存得到一片内存空间,那么这两个进程就可以将数据写入到共享内存/读取共享内存上的数据进行数据的交换。

 


二、实现共享内存步骤:

1)先申请key值。

key_t key = ftok(".", 10);//点是当前路径

2)根据申请到的key值去申请共享内存的ID号。

int shmget(key_t key, size_t size, int shmflg);

参数:

key: key值

size:共享内存的总字节数,必须是PAGE_SIZE的倍数 #define PAGE_SIZE 1024

shmlg: IPC_CREAT //不存在就创建

                IPC_CREAT|0666

返回值:

成功:共享内存ID号

失败:-1

3)根据ID号 将共享内存映射至本进程虚拟内存空间的某个区域

void *shmat(int shmid, cons

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

亚瑟来打龙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值