进程为了能在同一项任务上协调工作,它们彼此之间必须能够进行通信。例如,在一个shell 管道中,第 1 个进程的输出必须传送到第 2 个进程,这样沿着管道传递下去。因此在需要通信的进程之间,最好使用一种结构较好的通信方式。
Linux 支持许多不同形式的进程间通信机制 CIPCC,在特定的情况下,它们各自有优缺点。这一章将讨论最有用的进程间通信机制,即管道、 System V 的 IPC 机制及信号。至于Linux 支持的完全网络兼容的进程间通信机制 Sockets,将在第十三章网络部分中介绍。
本章介绍的管道通信中,要讨论匿名管道和命名管道两种方式;而在 System V 的 IPC 机制中,要讨论信号量、消息队列及共享内存 3 种通信方式。对于信号,则主要讨论 Linux 的信号机制。
本章将从内核和系统调用两个角度来讨论这些通信机制,以使你在写协调工作的并发进程时,可以作出明智的选择。
下载:第七章 进程间通信