我的問題關於在linux管道()函數:http://linux.die.net/man/2/pipe管()函數在linux
我的問題是: 「有沒有隻有一個Linux的管道?」。我的意思是,如果我有多個寫入管道的進程,它是否是同一個管道,這意味着一旦從管道讀取數據,我可能會在同一個read()操作中從不同進程獲取數據?
我的問題關於在linux管道()函數:http://linux.die.net/man/2/pipe管()函數在linux
我的問題是: 「有沒有隻有一個Linux的管道?」。我的意思是,如果我有多個寫入管道的進程,它是否是同一個管道,這意味着一旦從管道讀取數據,我可能會在同一個read()操作中從不同進程獲取數據?
閱讀不僅pipe(2),也pipe(7),最重要的Advanced Linux Programming
我的意思是,如果我有一個寫信給管
一般多個進程,你不應該做到這一點.. 。
它是一樣的管道,這意味着一旦我從管道讀取數據,我可能會從不同的過程中獲取數據es在相同的read()操作中?
是的,但你通常不這樣做。
編號pipe()
函數創建一個兩端的新管道。
會發生什麼情況是文件描述符可以重複。 dup
,dup2
功能可以做到這一點。 fork
也是。
如果你以某種方式擁有兩個帶有重複管道文件描述符的程序,那麼是的,它們都會出現在管道的輸出中。
這與顯示前臺和後臺運行程序的輸出的終端窗口是一樣的。
所以你說的是在fork()中創建的子進程繼承了管道的文件描述符,所以它實際上是完全相同的數據? – CrazySynthax
@CrazySynthax:就像當程序從命令行啓動一個新程序時,程序如何從shell中繼承終端的文件描述符。是。 –
這是一個很混亂的問題。爲什麼不把你認爲這個的東西放在首位呢?你有一個程序向你展示來自不同進程的數據嗎? –