2014-12-26 72 views
0

我非常新IPC編程C.我有一個很基本的問題,爲什麼很多的我們的C代碼使用DUP2作出標準輸出作爲寫頭和標準輸入爲已讀前往PIPE。是否有任何好處,comapred到整數型和使用該數組作爲輸入到管呼叫的陣列?爲什麼重定向到標準輸出和管道編程標準輸入如此普遍

+1

的主要原因是創建新的進程和執行其他應用程序時,因爲新的應用程序將不知道該管,但不知道標準輸入和輸出。 –

+0

我明白你的觀點。所以我們大部分的程序都需要stdout並從stdin中取得I/P。所以,如果我管的程序[|]使用stdin和stdout作爲寫頭和讀的UNIX管道,然後目的服役傳遞了兩個不相干的代碼段之間的信息的頭部。謝謝。 –

回答

2

許多C程序編寫爲過濾器,其(默認)從標準輸入讀取和寫入到標準輸出。與管道的漏洞,並且支持從一個程序的輸出發送到另一個輸入的成語,管道與:

ls | wc -l 

這就是爲什麼你經常結束與代碼連接管文件描述符標準輸入或標準輸出。如果你需要讓讀取程序或寫入,任意文件描述符,你必須提供控制參數,告訴他們該怎麼做。當然,現在在諸如Linux這樣的系統上使用/dev/fd文件系統,這是可行的,但是這是最近的一項創新,當許多程序第一次寫入時,這種創新是不可用的。你可以得到幾乎相同的結果如上使用:

ls | wc -l /dev/fd/0 

wc會在這種情況下呼應的文件名,而當沒有名字作爲第一個例子並不呼應的文件名。

+0

謝謝......它的解釋。非常基本,但我想念從我正在閱讀的頁面這個小信息:)謝謝。 –

相關問題