进程间通信 - 概述

进程间通信(IPC)是一种涉及将一个进程与另一个进程进行通信的机制.这通常只发生在一个系统中.

通信可以是两种类型 :

  • 在仅从一个进程启动的相关进程之间,例如父进程和子进程.

  • 在不相关的进程之间,或两个或多个不同进程之间.

以下是我们在继续讨论此主题之前需要了解的一些重要术语.

管道 : 两个相关流程之间的沟通.该机制是半双工的,意味着第一个过程与第二个过程通信.为了实现全双工,即第二个过程与第一个过程进行通信,需要另一个管道.

FIFO : 两个不相关的进程之间的通信. FIFO是全双工,意味着第一个进程可以同时与第二个进程通信,反之亦然.

消息队列 : 具有全双工容量的两个或多个进程之间的通信.这些进程将通过发布消息并将其从队列中检索出来来相互通信.检索后,队列中将不再提供该消息.

共享内存 : 通过所有进程之间共享的内存来实现两个或多个进程之间的通信.共享内存需要通过同步对所有进程的访问来保护彼此.

信号量 : 信号量用于同步对多个进程的访问.当一个进程想要访问内存(用于读取或写入)时,需要锁定(或保护)并在访问被删除时释放.所有流程都需要重复这一点以保护数据.

信号 : 信号是通过信令方式在多个进程之间进行通信的机制.这意味着源进程将发送一个信号(由数字识别),目标进程将相应地处理它.

注意 : 本教程中的几乎所有程序都基于Linux操作系统下的系统调用(在Ubuntu中执行).