Linux下程序間通訊的六種機制詳解

2022-06-18 17:24:08 字數 889 閱讀 5778

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下程序間通訊的六種機制詳解

linux下程序間通訊的幾種主要手段 1.管道 pipe 及有名管道 named pipe 管道可用於具有親緣關係程序間的通訊,有名管道克服了管道沒有名字的限制,因此,除具有管道所具有的功能外,它還允許無親緣關係程序間的通訊 2.訊號 signal 訊號是比較複雜的通訊方式,用於通知接受程序有某種事...

實驗六 程序間通訊(下)

一 實驗名稱 實驗六 程序間通訊 下 二 實驗日期 2014 4 3 三 實驗目的 l 通過實驗理解共享記憶體通訊 l 通過實驗理解linux訊號量 l 了解linux訊號量與訊息緩衝通訊 記憶體共享通訊之間的差異 l 布置作業1 四 實驗的步驟和方法 第六次小課程序間通訊 下 第一部分本週大課內容...

Linux六種程序狀態R S D T Z X

此文章已同步更新至我的個人部落格 只有在該狀態的程序才可能在cpu上執行。而同一時刻可能有多個程序處於可執行狀態,這些程序的task struct結構 程序控制塊 被放入對應cpu的可執行佇列中 乙個程序最多只能出現在乙個cpu的可執行佇列中 程序排程器的任務就是從各個cpu的可執行佇列中分別選擇乙...