關於Linux系統下IPC筆記

2021-09-30 05:46:47 字數 1046 閱讀 5887

linux下程序間通訊的幾種主要手段簡介:

1. 管道(pipe)及有名管道(named pipe):管道可用於具有親緣關係程序間的通訊,有名管道克服了管道沒有名字的限制,因此,除具有管道所具有的功能外,它還允許無親緣關係程序間的通訊;

2. 訊號(signal):訊號是比較複雜的通訊方式,用於通知接受程序有某種事件發生,除了用於程序間通訊外,程序還可以傳送訊號給程序本身;linux除了支援unix早期訊號語義函式sigal外,還支援語義符合posix.1標準的訊號函式sigaction(實際上,該函式是基於bsd的,bsd為了實現可靠訊號機制,又能夠統一對外介面,用sigaction函式重新實現了signal函式);

3. 報文(message)佇列(訊息佇列):訊息佇列是訊息的鏈結表,包括posix訊息佇列system v訊息佇列。有足夠許可權的程序可以向佇列中新增訊息,被賦予讀許可權的程序則可以讀走佇列中的訊息。訊息佇列克服了訊號承載資訊量少,管道只能承載無格式位元組流以及緩衝區大小受限等缺點。

4. 共享記憶體:使得多個程序可以訪問同一塊記憶體空間,是最快的可用ipc形式。是針對其他通訊機制執行效率較低而設計的。往往與其它通訊機制,如訊號量結合使用,來達到程序間的同步及互斥。

5. 訊號量(semaphore):主要作為程序間以及同一程序不同執行緒之間的同步手段。

6. 套介面(socket):更為一般的程序間通訊機制,可用於不同機器之間的程序間通訊。起初是由unix系統的bsd分支開發出來的,但現在一般可以移植到其它類unix系統上:linux和system v的變種都支援套接字。

linux環境程序間通訊(一)之管道(pipe &fifo)

linux環境程序間通訊(二): 訊號(上)

linux環境程序間通訊(二): 訊號(下)

linux環境程序間通訊(三)之訊息佇列(msg)

linux環境程序間通訊(四)之訊號量

linux環境程序間通訊(五): 共享記憶體(上)之對映普通檔案

linux環境程序間通訊(五): 共享記憶體(下)之對映記憶體

linux環境程序間通訊(六):之套接字

另外關於共享記憶體應用中的問題及解決方法可以參考:

Linux 下的IPC控制命令

shell環境控制ipc ipc物件一經建立,系統核心即會為該物件分配相關資料結構。為了方便對ipc物件的管理,linux系統提供了專門的ipc控制命令,主要包括檢視ipc物件資訊的ipcs和刪除ipc物件的ipcrm。1 檢視ipc物件資訊 ipcs 引數 1 引數說明 a 檢視全部ipc物件資訊...

linux系統IPC通訊 共享記憶體

很久以前就想研究一下核心原始碼,今天開始看看共享記憶體是如何實現的.以前就了解幾個函式.include include int shmget key t key,size t size,int shm void shmat int shm id,const void shm addr,int shm...

Linux系統下檢視IPC使用情況的方法

當我們建立了ipc物件,系統核心就會將相關的資料結構分配給該物件,當然我們為了便於ipc物件的管理,1.sys v 方法 可以通過 ipcs 命令來檢視 sys v 相關的 ipc 使用情況 2.posix 方法 1 message queue linux 提供了 mqueue 的檔案系統型別,可以...