Linux C語言 37-進程間通信IPC
本節關鍵字:C語言 進程間通信 信號 管道 消息隊列 共享內存 網絡通信(套接字)
相關庫函數:
提示:先做內容框架梳理,后期進行完善補充!
什么是進程間通信?
系統的安全性要求進程之間需要保持相對獨立,一個進程不能隨便訪問另外一個進程的地址空間。但是在實際項目中通常需要多個進程之間協作完成一些任務,這就需要進程之間能夠完成數據的傳遞。所以,不同進程之間傳播或交換信息就被稱為進程間通信(IPC,InterProcess Communication)。
進程間通信的作用
- 數據傳遞:消息傳遞(message passing)是IPC中常用的數據傳遞方式,即將數據抽象成一個個的消息進行傳遞。
- 控制流轉移:當一個通信發生時,內核將控制流從發送者進程切換到接收者進程;IPC中的控制流轉移通常是利用內核對進程的運行狀態和運行時間的控制來實現的。
進程間通信的分類
- 單向IPC:消息在一個連接上只能從端發送到另一端,例如:管道、信號;
- 雙向IPC:在一個連接上運行兩端互相收發消息,例如:套接字通信;
- 單/雙向IPC:根據通信中具體的配置選項判斷是否需要支持單向或雙向的通信。在實際中,很多操作系統選擇單/雙向IPC。
進程間通信IPC之信號量
Linux C語言 38-進程間通信IPC之信號量
進程間通信IPC之管道
Linux C語言 39-進程間通信IPC之管道
進程間通信IPC之消息隊列
Linux C語言 40-進程間通信IPC之消息隊列
進程間通信IPC之共享內存
Linux C語言 41-進程間通信IPC之共享內存
進程間通信IPC之網絡通信(套接字)
Linux C語言 42-進程間通信IPC之網絡通信(套接字)