进程间通信之共享内存篇

本文介绍了如何利用共享内存进行进程间通信。通过创建、连接共享内存段,并结合信号量进行同步,实现了一个消费者进程读取和显示数据,而生产者进程向内存段写入数据的示例。详细讲解了shmget、shmat、shmdt和shmctl等关键接口的用法。
摘要由CSDN通过智能技术生成

共享内存是在两个正在运行的进程之间传递数据的一种非常有效的方式。但是他并没有为我们提供同步的机制,因此我们需要用其他的机制来同步对共享内存的访问。对共享内存访问的同步控制必须要由程序员来控制。一种典型的应用是,我们用共享内存来提供对大块内存区域的有效访问,同时通过传递小消息来同步对该内存的访问。如果一个进程向共享内存段写入了数据,所做的改动立即被其他可以访问该共享内存的进程看到。

 

接口函数:

shmget函数创建共享内存;

第一次创建共享内存段时,他不能被任何进程访问。要想启动对该共享内存的访问,必须将其连接到一个进程的地址空间中。shmat函数来完成这部分工作,第二个参数一般设为0,表示让系统来选择共享内存出现的地址。

 

下面来看个例程,该例程第一个进程将创建一个共享内存段,然后把写到他里面的数据显示出来;第二个例程将连接一个已有的共享内存段,并允许我们向其写入数据。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值