Linux下程序通訊的八種方法

2022-07-09 07:48:12 字數 713 閱讀 5205

(1) 管道(pipe):管道允許乙個程序和另乙個與它有共同祖先的程序之間進行通訊;

(2) 命名管道(fifo):類似於管道,但是它可以用於任何兩個程序之間的通訊,命名管道在檔案系統中有對應的檔名。命名管道通過命令mkfifo或系統呼叫mkfifo來建立;

(3)

訊號(signal):訊號是比較複雜的通訊方式,用於通知接收程序有某種事情發生,除了用於程序間通訊外,程序還可以傳送訊號給程序本身;linux除

了支援unix早期訊號語義函式signal外,還支援語義符合posix.1標準的訊號函式sigaction(實際上,該函式是基於bsd的,bsd

v訊息佇列。有足夠許可權的程序可以向佇列中新增訊息,被賦予讀許可權的程序則可以讀走佇列中的訊息。訊息佇列克服了訊號承載資訊量少,管道只能成該無格式字

節流以及緩衝區大小受限等缺點;

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

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

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

Linux下程序通訊的八種方法

1 管道 pipe 管道允許乙個程序和另乙個與它有共同祖先的程序之間進行通訊 2 命名管道 fifo 類似於管道,但是它可以用於任何兩個程序之間的通訊,命名管道在檔案系統中有對應的檔名。命名管道通過命令mkfifo或系統呼叫mkfifo來建立 3 訊號 signal 訊號是比較複雜的通訊方式,用於通...

Linux下C 的程序通訊的八種方法

1 管道 pipe 管道允許乙個程序和另乙個與它有共同祖先的程序之間進行通訊 2 命名管道 fifo 類似於管道,但是它可以用於任何兩個程序之間的通訊,命名管道在檔案系統中有對應的檔名。命名管道通過命令mkfifo或系統呼叫mkfifo來建立 3 訊號 signal 訊號是比較複雜的通訊方式,用於通...

Linux檢視程序的4種方法

程序是在 cpu 及記憶體中執行的程式 而每個程序可以建立乙個或多個程序 父子程序 檢視程序方法 第一種 ps auxps命令用於報告當前系統的程序狀態。可以搭配kill指令隨時中斷 刪除不必要的程式。ps命令是最基本同時也是非常強大的程序檢視命令,使用該命令可以確定有哪些程序正在執行和執行的狀態 ...