Linux C语言 37-进程间通信IPC
本节关键字:C语言 进程间通信 信号 管道 消息队列 共享内存 网络通信(套接字)
相关库函数:
提示:先做内容框架梳理,后期进行完善补充!
什么是进程间通信?
系统的安全性要求进程之间需要保持相对独立,一个进程不能随便访问另外一个进程的地址空间。但是在实际项目中通常需要多个进程之间协作完成一些任务,这就需要进程之间能够完成数据的传递。所以,不同进程之间传播或交换信息就被称为进程间通信(IPC,InterProcess Communication)。
进程间通信的作用
- 数据传递:消息传递(message passing)是IPC中常用的数据传递方式,即将数据抽象成一个个的消息进行传递。
- 控制流转移:当一个通信发生时,内核将控制流从发送者进程切换到接收者进程;IPC中的控制流转移通常是利用内核对进程的运行状态和运行时间的控制来实现的。
进程间通信的分类
- 单向IPC:消息在一个连接上只能从端发送到另一端,例如:管道、信号;
- 双向IPC:在一个连接上运行两端互相收发消息,例如:套接字通信;
- 单/双向IPC:根据通信中具体的配置选项判断是否需要支持单向或双向的通信。在实际中,很多操作系统选择单/双向IPC。