我正在嘗試執行一些程序間數據交換,並決定使用命名管道進行一些操作。 我有一個非常基本的閱讀器和一個非常基本的作家,取自示例答案here。有關C++和命名管道的基本問題
我的第一個問題是,我不能同時採用兩種時間
write(...)
除非我讓程序睡眠。有沒有辦法解決這個問題? 在每次錄入後會打電話給sleep(1)
會使處理時間爆炸。我還想將多個進程寫入同一個fifo。那可能嗎?我的嘗試返回了不少問題...
最後有沒有辦法讓fifo攜帶一個對象而不是一個字符串?
我正在嘗試執行一些程序間數據交換,並決定使用命名管道進行一些操作。 我有一個非常基本的閱讀器和一個非常基本的作家,取自示例答案here。有關C++和命名管道的基本問題
我的第一個問題是,我不能同時採用兩種時間write(...)
除非我讓程序睡眠。有沒有辦法解決這個問題? 在每次錄入後會打電話給sleep(1)
會使處理時間爆炸。
我還想將多個進程寫入同一個fifo。那可能嗎?我的嘗試返回了不少問題...
最後有沒有辦法讓fifo攜帶一個對象而不是一個字符串?
1)寫入 - 檢查寫入結果。如果管道的另一端未打開,則寫入的字節數將爲0.
2)不可能,但可以有一個服務器FIFO用於接收請求。然後它爲每個客戶端進程生成一個管道名稱以連接併發送給客戶端。客戶端讀取服務器管道,關閉服務器管道並使用服務器給出的新名稱打開管道。服務器必須在不同的線程中輪詢所有管道。
3)這只是一個寫 - 它可以採取任何事情。只需以二進制形式轉儲整個對象。請注意,對象中不應該有任何指針,因爲指針不會指向相同的地址空間。
_'C++ named pipes'_沒有這種東西?!? –
如果我在C++和命名管道之間添加「&」會更好嗎? – Ant
我這麼認爲...... –