目录
在 Linux 系统中,有时候需要多个进程相互协作,共同完成某项任务。进程之间或线程之间有时候需要传递消息,有时候需要同步来协调彼此的工作。因此很有必要了解一下 Linux 中进程间通信方式。
线程在 Linux 中被实现为轻量级进程,线程之间的同步手段(互斥量和条件等待),本质上也是进程间通信。
进程间通信的手段,大体可以分为以下两类:
- 第一类是通信类:这类手段的作用是在进程之间传递消息,交换数据。若细分下来,通信类也可以分为两种,一种是用来传递消息(比如消息队列),另一种是通过共享一块内存区域来完成信息交换的(比如共享内存)
- 第二类是同步类:这类手段的目的是协调进程间的操作。某些操作,多个进程不能同时执行,否则可能会产生错误的结果,这就需要同步类的手段来协调
从历史角度来说,Linux 下进程间通信手段基本上是从 Unix 平台继承而来的。
AT&T 的贝尔实验室和加州大学伯克利分校的伯克利软件开发中心(BSD)分别开发出了风格迥异的进程间通信手段。前者通过对早期的进程间通信手段的改进和扩充,开发出 System V IPC,包括消息队列、信号量和共享内存。但这些方法,将进程间的通信始终局限在单个计算机这个范围之内。BSD