一、管道定義
管道是一種兩個進程間進行單向通信的機制。因為管道傳遞數據的單向性,管道又稱為半雙工管道。管道的這一特點決定了器使用的局限性。管道是Linux支持的最初Unix IPC形式之一,具有以下特點:
*** 數據只能由一個進程流向另一個進程(其中一個讀管道,一個寫管道);如果要進行雙工通信,需要建 立兩個管道。
*** 管道只能用于父子進程或者兄弟進程間通信。,也就是說管道只能用于具有親緣關系的進程間通信。
注意:從管道讀數據是一次性操作,數據一旦被讀,它就從管道中被拋棄,釋放空間以便寫更多的數據。
二、管道命令
command1 | command2 | command3
操作符是:”|”,它只能處理經由前面一個指令傳出的正確輸出信息,對錯誤信息信息沒有直接處理能力。然后,傳遞給下一個命令,作為標準的輸入.
管理命令的輸出說明:
【指令1】正確輸出,作為【指令2】的輸入 然后【指令2】的輸出作為【指令3】的輸入 ,【指令3】輸出就會直接顯示在屏幕上面了。
通過管道之后【指令1】和【指令2】的正確輸出不顯示在屏幕上面
【提醒注意】:
1. 管道命令只處理前一個命令正確輸出,不處理錯誤輸出;
2. 管道命令右邊命令,必須能夠接收標準輸入流命令才行;
三、管道應用
1.讀出logcat.log文件的內容,通過管道轉發給grep作為輸入內容
cat logcat.log | grep –n ‘ActivitManager’
#2.讀出logcat.log文件的內容,通過管道轉發給grep作為輸入內容,過濾包含‘Displayed’的行,將輸出內容再作為輸入能過管道轉發給下一個grep
cat logcat.log | grep –n ‘Displayed’| grep ??
#3.讀出logcat.log和wirelessqa.log文件的內容,出錯的內容會打印在屏幕上,正確的會通過管道傳給grep
#4.讀出logcat.log和wirelessqa.log文件的內容,出錯的內容會重定向到/dev/null,正確的會通過管道傳給grep
#5.讀出logcat.log通過管道傳給ls,由于ls不支持標準輸入,因此之前讀入的數據丟失。
文章列表