2016-04-15 42 views
1

我的問題關於在linux管道()函數:http://linux.die.net/man/2/pipe管()函數在linux

我的問題是: 「有沒有隻有一個Linux的管道?」。我的意思是,如果我有多個寫入管道的進程,它是否是同一個管道,這意味着一旦從管道讀取數據,我可能會在同一個read()操作中從不同進程獲取數據?

+0

這是一個很混亂的問題。爲什麼不把你認爲這個的東西放在首位呢?你有一個程序向你展示來自不同進程的數據嗎? –

回答

1

閱讀不僅pipe(2),也pipe(7),最重要的Advanced Linux Programming

我的意思是,如果我有一個寫信給管

一般多個進程,你不應該做到這一點.. 。

它是一樣的管道,這意味着一旦我從管道讀取數據,我可能會從不同的過程中獲取數據es在相同的read()操作中?

是的,但你通常不這樣做。

5

編號pipe()函數創建一個兩端的新管道。

會發生什麼情況是文件描述符可以重複。 dup,dup2功能可以做到這一點。 fork也是。

如果你以某種方式擁有兩個帶有重複管道文件描述符的程序,那麼是的,它們都會出現在管道的輸出中。

這與顯示前臺和後臺運行程序的輸出的終端窗口是一樣的。

+0

所以你說的是在fork()中創建的子進程繼承了管道的文件描述符,所以它實際上是完全相同的數據? – CrazySynthax

+3

@CrazySynthax:就像當程序從命令行啓動一個新程序時,程序如何從shell中繼承終端的文件描述符。是。 –