linux處理序間通訊主要分為以下4個領域
(1)訊息傳遞(管道,FIFO,訊息佇列)
(2)同步(互斥鎖,條件變數,讀寫鎖,訊號量)
(3)共用記憶體區(匿名共用記憶體區,有名共用記憶體區)
(4)程序呼叫(Solaris門,Sun RPC)
linux進程間的資訊共用可以分為
(1) 基於檔案系統的共用
(2) 基於核心的共用
(3) 基於共用記憶體區的共用
IPC對象的持久性
(1)隨進程間持續的IPC對象一直存在到開啟著該對象的最後一個進程關閉該對象的最後一個進程關閉該對象為止。
(2)隨核心持續的IPC對象一直存在到核心重新自舉或顯式刪除該對象為止。
(3)隨檔案系統持續的IPC對象一直存在到顯示刪除該對象為止。即使系統自舉了,該對象還是存在的。
IPC類型 持久性
管道 隨進程
FIFO 隨進程
Posix互斥鎖 隨進程
Posix條件變數 隨進程
Posix讀寫鎖 隨進程
fcntl記錄上鎖 隨進程
Posix訊息佇列 隨核心
Posix有名訊號量 隨核心
Posix基於記憶體的訊號量 隨進程
Posix共用記憶體區 隨核心
System V訊息佇列 隨核心
System V訊號量 隨核心
System V共用記憶體區 隨核心
TCP通訊端 隨進程
UDP通訊端 隨進程
Unix域通訊端 隨進程
名字空間:
當兩個或多個無親緣關係的進程使用某種類型的IPC對象來彼此交換資訊時,該IPC對象必須有一個某種形式的名字或者標識符,這樣其中一個進程(往往是伺服器)可以建立該IPC對象,其餘進程則可以指定同一個IPC對象。
IPC類型 用於開啟或建立IPC的名字空間 IPC開啟後的標識
管道 沒有名字 描述符
FIFO 路徑名 描述符
Posix互斥鎖 沒有名字 pthread_mutex_t指標
Posix條件變數 沒有名字 pthread_cond_t指標
Posix讀寫鎖 沒有名字 pthread_rwlock_t指標
fcntl記錄上鎖 路徑名 描述符
Posix訊息佇列 Posix IPC名字 mqd_t值
Posix有名訊號量 Posix IPC名字 sem_t指標
Posix基於記憶體的訊號量 沒有名字 sem_t指標
Posix共用記憶體區 Posix IPC名字 描述符
System V訊息佇列 key_t鍵 System V IPC標識符
System V 訊號量 key_t鍵 System V IPC標識符
System V共用記憶體區 key_t鍵 System V IPC 標識符
門 路徑名 描述符
sun RPC 程式/版本 RPC控制代碼
TCP通訊端 IP地址與TCP 通訊埠 描述符
UDP通訊端 IP地址與UDP連接埠 描述符
Unix域通訊端 路徑名 描述符