關於管道的理解 Linux篇

2021-09-29 04:44:43 字數 804 閱讀 8554

首先,對於程序之間的通訊,一共有三種方式

· 管道(pipe)

· fifo

· _mmp對映

管道是一種兩個程序間進行單向通訊的機制。因為管道傳遞資料的單向性,管道又稱為半雙工管道。管道的這一特點決定了器使用的侷限性。管道是linux支援的最初unix ipc形式之一,具有以下特點:

資料只能由乙個程序流向另乙個程序(其中乙個讀管道,乙個寫管道);

如果要進行雙工通訊,需要建 立兩個管道。

對於管道來說,是限於兩個有血緣關係間程序的通訊。那麼,從字面意思出發,管道就是為有血緣關係的程序提供了乙個地下通道,來進行通訊。

以shell命令 ps aux | grep bash 為例,寫一段**

1 #include 

2 #include 34

intmain()

517else

if(pid >0)

*/27

execlp

("grep"

,"grep"

,"bash"

,null);

28}29return0;

30}

當執行該段程式後,得到與 shell 命令ps aux | grep bash 相同的結果。

其中,若不將子程序中管道的讀取fd[0]和父程序中管道的寫fd[1]關閉,當父程序讀取到子程序傳來的 ps aux 的結果後,由於對於管道來說還有可能寫入的可能,即父程序的寫端未關閉,便繼續阻塞等待輸入,所以必須將管道設定為同乙個流向,(此程式為子程序流向父程序),呼叫close將fd[1]指向的寫端關閉即可。

Linux關於管道

管道是unix中最古老的程序間通訊的形式。我們把從乙個程序連線到另乙個程序的乙個資料流稱為乙個 管道 我們通常把是把乙個程序的輸出連線或 管接 經過管道來連線 到另乙個程序的輸入。管道是半雙工的,資料只能向乙個方向流動 需要雙方通訊時,需要建立起兩個管道 只能用於父子程序或者兄弟程序之間 具有親緣關...

管道的理解

linux系統中的命令可以將標準輸入讀取資料,還能將這些資料送到標準輸出中去,這種功能被系統進一步的利用,從而產生出一種新的特性,稱之為管道符 這個符號可以將乙個命令的標準輸出管道為另外乙個命令的標準輸入。需要注意的是管道符的使用有兩個條件 1 管道命令只能處理前乙個命令的標準輸出,而不能處理標準錯...

怎麼理解linux中的管道 通過管道能做哪些工作

是管道命令操作符,簡稱管道符。利用linux所提供的管道符 將兩個命令隔開,管道符左邊命令的輸出就會作為管道符右邊命令的輸入。連續使用管道意味著第乙個命令的輸出會作為 第二個命令的輸入,第二個命令的輸出又會作為第三個命令的輸入,依此類推。它僅能處理經由前面乙個指令傳出的正確輸出資訊,也就是 stan...