进程间通信(IPC)介绍

本文介绍了进程间通信(IPC)的目的,包括数据传输、资源共享和事件通知。详细讲解了四种主要的IPC机制:匿名管道、命名管道、消息队列和共享内存,包括各自的特点、使用方法和相关函数。此外,提到了信号量在同步和互斥中的作用,并给出了相关命令ipcs和ipcrm用于管理IPC资源。最后总结了各种IPC机制的优缺点及其适用场景。
摘要由CSDN通过智能技术生成

1.进程间通信目的

我们知道计算机执行某个任务时可能并不是只创建一个进程去完成,可能创建了许多进程去共同完成这个任务,这些进程在在相互协调工作时,可能需要在他们之间传输数据,共享某些资源,或者通知某个事件发生,有些进程可能还需要完全控制另一个进程(如debug进程),所以就有了进程间通信,但是我们知道每个进程都有自己独立的虚拟地址空间(分为用户空间和内核空间),进程的用户空间都是独立的,一般而言都是不能访问的,唯一例外的是共享内存区,系统空间的大部分资源是所有进程共享的,各进程均可以访问的,所以内核也可以提供这样的条件,此外所有进程都可以访问外设,所以两个进程也可以通过磁盘上的普通文件进行信息交换。由此我们只要让不同的进程看到同一块资源,就可以让两个进程进行信息交换。

2.进程间通信分类

2.1 管道通信

1) 管道是半双工的,数据只能向一个方向流动;需要双方通信时,需要建立起两个管道,自带同步机制.
2) 匿名管道只能用于父子进程或者兄弟进程之间(具有亲缘关系的进程),命名管道则没有此限制;
3) 单独构成一种独立的文件系统:管道对于管道两端的进程而言,就是一个文件,但它不是普通的文件,它不属于某种文件系统,而是自立门户,单独构成一种文件系统,并且只存在与内存中。
4)生命周期随进程

2.2匿名管道

创建匿名管道
头文件
#include<unistd.h>
原型
int pipe(int fd[2]);
参数:文件描述符数组,其中fd[0]表示读端fd[1]表示写端.
返回值:成功返回零,失败返回错误码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值