程序之間的通訊方式

2021-08-05 18:47:41 字數 793 閱讀 1096

1、管道(pipe):管道可用於具有親緣關係程序間的通訊,允許乙個程序和另乙個與它有共同祖先的程序之間進行通訊。

2、命名管道(name pipe):命名管道克服了沒有名字的限制,因此,除了具有管道所擁有的功能外,它還允許無親緣關係程序間同通訊。命名管道在檔案系統中有對應的檔名。命名管道通過命令mkfifo或系統呼叫mkfifo來建立。

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

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

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

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

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

程序之間的通訊方式

資料傳輸 資源共享 通知事件 程序控制 是管道的意思,它的作用就是把前一條命令的輸出作為後一條命令的輸入。如果兩個程序要通訊的話,可以使用這種管道進行通訊,因為 沒有名字,所以成為匿名管道,匿名管道一般用於有父子程序關係的程序中 並且這種通訊方式是單向的,只能把第乙個命令的輸出作為第二個命令的輸入,...

程序之間的通訊方式

程序之間的通訊方式有管道 訊息佇列 共享記憶體 訊號量和socket五種方式。管道 來看一條linux的指令 netstat tulnp grep 8080 學過linux命名的估計都懂得這條指令的含義,其中的 就是管道的意思,作用是把前一條命令的輸出作為後一條命令的輸入。在這裡就是把netstat...

程序之間 執行緒之間的通訊方式

1 程序間的8中通訊方式 1 無名管道 pipe 管道是一種半雙工的通訊方式,資料只能單向流動,而且只能在具有親緣關係的程序間使用。程序的親緣關係通常是指父子程序關係。2 2 高階管道 popen 將另乙個程式當做乙個新的程序在當前程式程序中啟動,則它算是當前程式的子程序,這種方式我們成為高階管道方...