2015-11-02 157 views
-1

我在Windows(C++)上使用命名管道。我能夠將數據從一個不相關的進程發送到另一個進程。 但爲此,我必須先啓動服務器。並在運行客戶端之前使用「CreateNamedPipe」。客戶端使用「CreateFile」連接到服務器。在Windows上命名管道

有沒有一種方法,我可以啓動服務器之前先運行客戶端? (但不嘗試使用「的CreateFile」在循環中,直到它成功)

謝謝。

+1

不,當然不是。在創建它之前沒有命名管道。 – EJP

+0

儘管您不必使用循環。只需創建一個命名事件,並在管道準備就緒後讓服務器發出事件信號。 –

回答

0

IMO,這取決於你的用例。我的回答將基於您的軟件不需要命名管道工作的情況。例如,讓我們說一個使用命名管道記錄活動的軟件。通過這種方式,我們可以理解您的軟件無需記錄即可完美工

,如果你不需要命名的點子存在啓動你的程序應該是可能的。然後,一旦所有東西都加載完成並且可以正常工作,可以讓子程序週期性地檢查命名管道的存在(比方說,爲了不超載CPU,每5秒鐘一次),一旦創建,就開始使用它。

注:它仍然看起來像一個無限「的循環,直到它成功」,但我看不出有什麼不妥,因爲你做正確,說,你與非阻塞機制運行。

注:它並不必然意味着多進程技術。你可以想象一個單一的主循環與定期檢查(不是每次迭代)。