深入详解Linux进程间通信之共享内存(Shared Memory)+信号量同步【2】

本文深入探讨Linux IPC中的匿名共享内存和信号量同步。通过示例展示如何创建匿名共享内存,读写数据,并利用信号量进行进程间的同步控制。详细解释了如何使用`MAP_ANONYMOUS`标志以及`sem_open()`等函数。
摘要由CSDN通过智能技术生成

在Linux下的多个进程间的通信机制叫做IPC(Inter-Process Communication),它是多个进程之间相互沟通的一种方法。专栏前面的文章中演示过使用shared memory进行IPC的方法。本文将更进一步探讨Linux进程间通过共享内容进行通信的方法,包括如何使用Anonymous shared memory,以及如何使用信号量来进行同步等。Shared memory允许两个或多个进程共享一给定的存储区,因为数据不需要来回复制,所以是最快的一种IPC机制。本文中的代码都在Ubuntu系统上实现。
 

一、Anonymous shared memory

匿名映射前面提到过,有兴趣的读者还可以参考【1】来了解更多。在Linux中有两种创建anonymous mappings的方法:

  • specify MAP_ANONYMOUS flag and pass -1 for fd
addr = mmap(NULL, length, PROT_READ | PROT_WRITE, MAP_SHARED | MAP_ANONYMOUS, -1, 0); 
if (addr == MAP_FAILED)
    exit(EXIT_FAILURE);  
  • open /dev/zero and pass this opened fd (this method is typically used on systems l
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

白马负金羁

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

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

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

打赏作者

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

抵扣说明:

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

余额充值