2014-09-04 105 views
0

我剛剛瞭解pipe,fifo和我有一個問題。Pipe,Fifo,讀取()和寫入()函數

如果一個程序打開一個閱讀管道,另一個程序打開一個管道進行書寫,會發生什麼情況。這兩個程序以並列方式運行。假設第一個程序試圖讀取表單管道,但沒有信息,所以在第二個程序寫入內容之前它會被阻塞。

在第二步中,第一個程序更快,並嘗試再次讀取管道。這一次有一些來自上次的信息。該計劃是做什麼的?它是否讀取上次的信息?

謝謝!

回答

2

如果我正確解釋你的問題,答案是否定的。第一次讀取的任何信息都會被消耗,並且不再可用於管道。如果沒有進一步寫入管道,則第二次讀取將被阻止。

+0

按照我的理解,你解釋錯了 - 問題明確指出「這次有一些信息來自上次」。 - 如果您爲讀取功能提供小緩衝區長度,可能會發生這種情況。但也許這個問題寫得不好。 – Sebastian 2014-09-07 20:49:52

+0

@塞巴斯蒂安 - 一致認爲這個問題措辭不佳,但由於OP接受了我的回答,所以我似乎正確地解釋了他的問題。 – DoxyLover 2014-09-07 21:07:29

1

是的,從管道讀取的程序將按照其他程序寫入的順序讀取所有內容,但不一定是相同的塊大小。如果有可用的東西,它會讀取它(或者適合讀取緩衝區的那麼多)。