3
我有一個管道,我的所有子進程都使用管道,但是在子進程使用管道與父進程通信之前,我需要清除它以便父進程正確讀取。在C中有一個簡單的函數來做到這一點?是否有一種清理管道的簡單方法C
我有一個管道,我的所有子進程都使用管道,但是在子進程使用管道與父進程通信之前,我需要清除它以便父進程正確讀取。在C中有一個簡單的函數來做到這一點?是否有一種清理管道的簡單方法C
「清除」管道的方法是從中讀取,直到緩衝區爲空。這對你沒有幫助。我猜你真正的問題是父母可能會讀取來自多個客戶端的混合數據。有兩個簡單的解決方案來解決您的問題。
總是寫不到PIPE_BUF
字節長的消息,並以write
單個調用做到這一點。這將確保寫入管道是原子性的。
對每個子進程使用單獨的管道。在服務器端,使用線程或使用非阻塞IO與select
或poll
。等同地,您可以使用Unix域套接字,並讓每個客戶端連接到套接字(這實際上只是創建單獨管道的一種不同方式)。
嘿謝謝你的幫助。 – 2012-02-25 21:00:36