linux下程序通訊的八種方法:
管道(pipe),
命名管道(fifo),
訊息佇列(message queue),
共享記憶體(shared memory),
訊號量(semaphore),
訊號(signal)
,套接字(socket)
(1) 管道(pipe):
管道允許乙個程序和另乙個與它有共同祖先的程序之間進行通訊;
(2) 命名管道(fifo):
類似於管道,但是它可以用於任何兩個程序之間的通訊,命名管道在檔案系統中有對應的檔名。命名管道通過命令mkfifo或系統呼叫mkfifo來建立;
(3) 訊號(signal):
訊號是比較複雜的通訊方式,用於通知接收程序有某種事情發生,除了用於程序間通訊外,程序還可以傳送訊號給程序本身;linux除了支援unix早期訊號語義函式signal外,還支援語義符合posix.1標準的訊號函式sigaction(實際上,該函式是基於bsd的,bsd即能實現可靠訊號機制,又能夠統一對外介面,用sigaction函式重新實現了signal函式的功能);
記憶體對映允許任何多個程序間通訊,每乙個使用該機制的程序通過把乙個共享的檔案對映到自己的程序位址空間來實現它;
(5) 訊息佇列(message queue):
訊息佇列是訊息的連線表,包括posix訊息對和system v訊息佇列。有足夠許可權的程序可以向佇列中新增訊息,被賦予讀許可權的程序則可以讀走佇列中的訊息。訊息佇列克服了訊號承載資訊量少,管道只能成該無格式位元組流以及緩衝區大小受限等缺點;
(6) 訊號量(semaphore):
訊號量主要作為程序間以及同程序不同執行緒之間的同步手段;
(7) 共享記憶體 (shared memory):
它使得多個程序可以訪問同一塊記憶體空間,是最快的可用ipc形式。這是針對其他通訊機制執行效率較低而設計的。它往往與其他通訊機制,如訊號量結合使用,以達到程序間的同步及互斥;
(8) 套接字(socket):
它是更為通用的程序間通訊機制,可用於不同機器之間的程序間通訊。起初是由unix系統的bsd分支開發出來的,但現在一般可以移植到其他類unix系統上:linux和system v的變種都支援套接字。
linux下程序通訊的八種方法:
linux下程序間通訊的幾種主要手段
linux下程序間通訊的幾種主要手段 1.管道 pipe 及有名管道 named pipe 管道可用於具有親緣關係程序間的通訊,有名管道克服了管道沒有名字的限制,因此,除具有管道所具有的功能外,它還允許無親緣關係程序間的通訊 2.訊號 signal 訊號是比較複雜的通訊方式,用於通知接受程序有某種事...
linux下程序間通訊
linux下程序間通訊的幾種主要手段簡介 管道 pipe 及有名管道 named pipe 管道可用於具有親緣關係程序間的通訊,有名管道克服了管道沒有名字的限制,因此,除具有管道所具有的功能外,它還允許無親緣關係程序間的通訊 訊號 signal 訊號是比較複雜的通訊方式,用於通知接受程序有某種事件發...
Linux下程序間通訊
linux下的程序通訊基本上是從unix平台上的程序通訊繼承來的。而對unix發展做出最大貢獻的倆大主力at t的貝爾實驗室及bsd 加州大學伯克利分校的伯克利軟體發布中心 在程序的通訊方面的側重點有所不同。前者是對unix早期的程序間通訊手段進行了系統的改進和擴充,形成了 system v ipc...