1
我有一個關於Windows管道的問題。在ReadFile
功能手冊寫的是:匿名管道的ReadFile函數
如果正在使用匿名管道和寫句柄已關閉,當ReadFile的嘗試使用管道的相應的讀句柄讀取,該函數返回FALSE和GetLastError返回ERROR_BROKEN_PIPE。
讓我們假設從管道讀取每秒發生一次。從上次讀取操作發生以下情況:寫入管道操作並關閉寫入處理程序。根據上面的手冊,函數返回錯誤 - 讀取操作失敗。我的問題未讀取的數據會發生什麼?我如何得到它們?
所以,當'ReadFile'返回錯誤'ERROR_BROKEN_PIPE'錯誤。這並不意味着函數失敗,這意味着它完成了它的工作(從管道讀取最後一個數據)? – user14416
@ user14416:是的 - 如果您(例如)產生寫入某個輸出然後退出的孩子,則預計您將讀取數據,然後獲取ERROR_BROKEN_PIPE。當然,它*也可能意味着孩子墜毀,或者按照該順序。 –
我相信對ReadFile的調用將從管道獲取最後的數據,並且下一次調用將返回ERROR_BROKEN_PIPE。換句話說,錯誤被推遲到管道是空的。 –