linux程序通訊中的管道,標準輸出 錯誤重定向

2021-08-19 18:08:29 字數 1397 閱讀 2455

管道pipe

管道是linux系統提供給程序通訊的一種方式,它的本質是乙個緩衝區,可以想象成乙個管道,a程序從管道一端輸入資料,b程序在另一端接收資料,當管道快取滿的時候阻塞a程序,直到有程序將管道資料讀出,此時喚醒a程序。

管道的快取容量是系統規定的,在終端下輸入:ulimit -a    如下圖pipe size即為管道容量。 

標準輸出/錯誤:

程式執行過程中輸出到螢幕的程式執行資訊就是標準輸出,相應的程式輸出的錯誤資訊就是標準錯誤輸出,重定向('>')的時候預設重定向標準輸出,對於標準錯誤該怎麼定向呢?他們之間的區別用簡單的例子區別:

執行ls命令成功,得到以下輸出,即標準輸出

將標準輸出重定向到log檔案:

執行乙個錯誤的ls命令:

此時log檔案並沒有錯誤資訊:

在linux系統中:

0代表標準輸入流

1代表標準輸出流

2代表標準輸出流

ls >log 等於ls 1>log

依然執行上面錯誤的命令 ls test ,即當前目錄不存在test檔案,此時會有標準錯誤輸出,

因此,可以自由決定標準輸出/錯誤怎麼輸出,如:

>log 2>&1     標準輸出到log,標準錯誤定向到標準輸出,即log檔案,等於》&log。

>log 2>wrong     標準輸出重定向到log,標準錯誤重定向到wrong問件。

>&log      標準輸出/錯誤都輸出到log檔案中。

程序通訊中的無名管道

1,無名管道的建立 include int pipe int pipefd 2 返回值 成功返回0,失敗返回 1,並且可以通過perror把錯誤碼列印出來。2,用法 1 建立管道 pipe。2 關閉無關的埠。本身是全雙工的,但是我們兩個程序用乙個管道通訊,會按某種同步方式去讀寫資料,否則 會造成資料...

程序通訊中的有名管道

1.有名管道 在檔案系統種,有個管道的節點。然後兩個不同程序,可以通過系統io所提供的介面函式,去實現通訊。open read write close 2.建立 mkfifo char name,mode t mode 第乙個引數為建立節點的名字,第二個引數為建立這個節點的訪問許可權 3.包含的標頭...

linux 程序通訊 管道通訊

程序通訊 1 pipe 函式的作用 建立無名管道 函式的原型 int pipe int fds 2 函式的引數 新建的兩個描述符fds陣列返回 fds 0 表示管道的讀取端 fds 1 表示管道的寫入端 返回值 成功 0 出錯 1 標頭檔案 include 2 mkfifo 函式的作用 建立有名管道...