利用管道實現多程序間通訊

2021-09-22 22:39:48 字數 1202 閱讀 7983

管道是linux系統最常見的程序間通訊方式之一,它在兩個程序之間實現乙個資料流通的通道,資料以一種資料流的方式在程序間流動。它把乙個程式的輸出直接連到另乙個程式的輸入。

管道可以分為以下兩種,利用這兩種管道可以實現程序間的通訊,但是對於程序間的關係會有所限制

解決和**方法如下,資料以字元為例,通訊的內容為姓名和學號。

無名管道屬於linux中管道通訊的一種原始方法

(1)它只能用於具有親緣關係的程序之間的通訊(即父子程序或兄弟程序之間)

(2)它是乙個半雙工的通訊模式,具有固定的讀端和寫端

(3)管道也可以看成是一種特殊的檔案,對於它的讀寫也可以使用普通的read()和write()函式。但是它不是普通的檔案,不屬於其他任何檔案系統,並且只存在於記憶體中。

結果如圖

有名管道是對無名管道的一種改進

(1)它可以使兩個互不相關的兩個程序實現彼此通訊

(2)該管道可以通過路徑名來指出,並且在檔案系統中是可見的。在建立管道之後,兩個程序可以把它當作普通檔案一樣進行讀寫操作

(3)有名管道嚴格遵循先進先出規則,對管道的讀總是從開始處返回資料,對於寫則是把資料新增到末尾,它們不支援如seek()等檔案定位操作

vim fifo_w.c

寫端**

讀端**

結果開啟終端輸入如下

同時開啟另乙個終端

利用管道實現多程序間的通訊屬於比較常見的,這個通訊的過程還是比較好理解的,比實現生產者和消費者問題要容易一些。

利用管道實現程序間通訊

管道 pipe 是程序用來通訊的共享記憶體區域。乙個程序往管道中寫入資訊,而其它的程序可以從管道中讀出資訊。如其名,管道是程序間資料交流的通道。郵路 mailslots 的功能與管道類似,也是程序間通訊 interprocess communications,ipc 的媒介,只不過其具體實現方式與管...

利用管道實現程序間的單向通訊

管道是程序間通訊的最原始方式,今天我們利用管道的程序間通訊,來實現簡單的程序間單向通訊 首先我們需要了解命名管道的一些特性命名管道的使用與建立 然後建立乙個fifo c的檔案來實現輸入資料和傳送資料 這是乙個命名管道的實現,往命名管道中寫入資料,並且傳送給另乙個程序 1.建立乙個命名管道 int m...

利用管道實現Shell多程序

shell中有個 表示該程式在後台執行,其實是fork了乙個子程序,跟系統呼叫是一樣的。在實際的操作過程中,有時需要控制後台程式的個數,畢竟啟動太多的後台,會對服務的效能造成影響。所以需要控制後台程式的個數。在shell中,可以利用管道技術來實現,如下是程式的模板及其注釋,有需要人可以拿去。bin ...