一、进程间通信概念
首先,需要了解一下什么是进程间通信。
进程之间的相互通信的技术,称为进程间通信(InterProcess Communication,IPC)。
下图列出 4 种实现所支持的不同形式的 IPC。
进程间通信 (IPC)方式有:
(1)管道
(2)消息队列
(3)信号量
(4)共享存储
(5)套接字
其中消息队列、信号量、共享存储统称为 XSI IPC通信方式
下面我们开始一一详细讲解:
二、管道
管道是 UNIX 系统 IPC 的最古老形式。所有 UNIX 系统都提供此种通信机制。管道有以下两种局限性。
(1)历史上,它们是半双工的(即数据只能在一个方向上流动)。现在,某些系统提供全双工管道,但是为了最佳的可移植性,我们决不应预先假定系统支持全双工管道。
(2)管道只能在具有公共祖先的两个进程之间使用。通常,一个管道由一个进程创建,在进程调用 fork 之后,这个管道就能在父进程和子进程之间使用了。
尽管有这两种局限性,半双工管道仍是最常用的 IPC 形式。
其中管道又分为,有名管道 无名管道。
1、无名管道
其中 pipefd[0] 用于从所创建的无名管道中读取数据,pipefd[1] 用于向该管道写入数据,pipefd[1] 的输出是pipefd[0] 的输入。