pipe實現管道命令

2021-09-13 09:41:15 字數 670 閱讀 6945

// ps aux|grep bash

intmain()

else

return0;

}

管道的讀寫行為											

使用管道需要注意以下4種特殊情況(假設都是阻塞i/o操作,沒有設定o_nonblock標誌):

1. 如果所有指向管道寫端的檔案描述符都關閉了(管道寫端引用計數為0),而仍然有程序從管道的讀端讀資料,那麼管道中剩餘的資料都被讀取後,再次read會返回0,就像讀到檔案末尾一樣。

2. 如果有指向管道寫端的檔案描述符沒關閉(管道寫端引用計數大於0),而持有管道寫端的程序也沒有向管道中寫資料,這時有程序從管道讀端讀資料,那麼管道中剩餘的資料都被讀取後,再次read會阻塞,直到管道中有資料可讀了才讀取資料並返回。

3. 如果所有指向管道讀端的檔案描述符都關閉了(管道讀端引用計數為0),這時有程序向管道的寫端write,那麼該程序會收到訊號sigpipe,通常會導致程序異常終止。當然也可以對sigpipe訊號實施捕捉,不終止程序。具體方法訊號章節詳細介紹。

4. 如果有指向管道讀端的檔案描述符沒關閉(管道讀端引用計數大於0),而持有管道讀端的程序也沒有從管道中讀資料,這時有程序向管道寫端寫資料,那麼在管道被寫滿時再次write會阻塞,直到管道中有空位置了才寫入資料並返回。

管道命令(pipe)

排序命令 root www sort fbmnrtuk file or stdin 選項與引數 f 忽略大小寫的差異,例如 a 與 a 視為編碼相同 b 忽略最前面的空格符部分 m 以月份的名字來排序,例如 jan,dec 等等的排序方法 n 使用 純數字 進行排序 預設是以文字型態來排序的 r 反...

管道命令pipe學習

管道命令使用的是 這個界定符號 其實這個管道命令 僅能處理經由前面乙個命令傳來的正確資訊,也就是standard output的資訊,對於standard error並沒有直接處理的能力。command1 command2 command3,前乙個命令的輸出作為後乙個命令的輸入 選取命令 cut,g...

Linux Shell 管道命令 pipe 的使用

command1正確輸出,作為command2的輸入 然後comand2的輸出作為,comand3的輸入 comand3輸出就會直接顯示在螢幕上面了。通過管道之後 comand1,comand2的正確輸出不顯示在螢幕上面 注意 1 管道命令只處理前乙個命令正確輸出,不處理錯誤輸出 2 管道命令右邊命...