管道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 函式的作用 建立有名管道...