2012-02-25 72 views

回答

8

「清除」管道的方法是從中讀取,直到緩衝區爲空。這對你沒有幫助。我猜你真正的問題是父母可能會讀取來自多個客戶端的混合數據。有兩個簡單的解決方案來解決您的問題。

  1. 總是寫不到PIPE_BUF字節長的消息,並以write單個調用做到這一點。這將確保寫入管道是原子性的。

  2. 對每個子進程使用單獨的管道。在服務器端,使用線程或使用非阻塞IO與selectpoll。等同地,您可以使用Unix域套接字,並讓每個客戶端連接到套接字(這實際上只是創建單獨管道的一種不同方式)。

+0

嘿謝謝你的幫助。 – 2012-02-25 21:00:36

相關問題