文章出處

 

一、管道定義

管道是一種兩個進程間進行單向通信的機制。因為管道傳遞數據的單向性,管道又稱為半雙工管道。管道的這一特點決定了器使用的局限性。管道是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’

3

 

#2.讀出logcat.log文件的內容,通過管道轉發給grep作為輸入內容,過濾包含‘Displayed’的行,將輸出內容再作為輸入能過管道轉發給下一個grep

cat logcat.log | grep –n ‘Displayed’| grep ??

4

 

#3.讀出logcat.log和wirelessqa.log文件的內容,出錯的內容會打印在屏幕上,正確的會通過管道傳給grep

5

 

#4.讀出logcat.log和wirelessqa.log文件的內容,出錯的內容會重定向到/dev/null,正確的會通過管道傳給grep

6

 

#5.讀出logcat.log通過管道傳給ls,由于ls不支持標準輸入,因此之前讀入的數據丟失。


文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()