2009-11-12 77 views
0

命名管道在Windows(和其他操作系統,以及過程範圍)?命名管道C#使用.NET 3.5功能,如NamedPipeClientStream

我有這個奇怪的場景:

我寫了一個程序可以說「Controller.exe」,這滋生了一堆「Workers.exe」,那麼Controller.exe創建一個名爲「PIPE0」命名管道..通過「PipeN」。

然後Workers.exe(以命令行參數arg作爲管道名稱啓動)連接到此管道。

所以這controller.exe產生負荷開工,其創建的程序(「controller.exe」)的5個實例的顧客5倍Worker.exe處理

,但在我的Controller.exe我的代碼創建一個名爲「Pipe0」的命名管道...「PipeN」...所以我的問題是這是如何工作!?

命名管道是否是OS範圍廣的?至於Worker.exe如何知道連接到哪個命名管道「pipe0」?

回答

0

我不知道* NIX,但在Windows,他們都在同一個命名空間命名的內核對象(例如命名互斥體),這是由所有進程共享。至於要聽哪個管道,請將其作爲命令行參數傳遞。

+0

的權利,這是我做什麼...所以你說「PipeO」是全球性的,任何程序去的談話「PIPE0」得到了相同的管參考? – halivingston 2009-11-12 10:52:51

+0

是的,只要你不混合大寫字母O和數字0。 – erikkallen 2009-11-12 12:51:06