簡體   English   中英

使用.NET 3.5功能(如NamedPipeClientStream)的命名管道C#

[英]Named pipe C# using .NET 3.5 features like NamedPipeClientStream

Windows(以及其他OS以及整個過程)中的命名管道嗎?

我有這種奇怪的情況:

我寫了一個程序,說“ Controller.exe”,它產生了一堆“ Workers.exe”,然后Controller.exe通過“ PipeN”創建了一個名為“ Pipe0” ...的命名管道。

然后,Workers.exe(以命令行arg作為管道名稱啟動)連接到該管道。

因此,此controller.exe的客戶生成了負載啟動程序的5個實例(“ controller.exe”),該實例創建了5倍Worker.exe進程

但是在我的Controller.exe代碼中,我創建了一個名為“ Pipe0” ...“ PipeN”的命名管道...所以我的問題是,這甚至如何工作!

管道操作系統的名稱不是全范圍嗎? 如在Worker.exe中如何知道要連接到哪個命名管道“ pipe0”?

請查看“ 命名管道MSDN頁面”以獲取有關該機制的描述。 在您的方案中,以后嘗試創建具有相同名稱的管道可能會導致INVALID_HANDLE_VALUE錯誤。 至少這就是CreateNamedPipe函數參考的內容

我不了解* NIX,但是在Windows中它們與命名的內核對象(例如,命名的互斥體)位於同一命名空間中,所有進程都共享該命名空間。 至於要偵聽的管道,請將其作為命令行參數傳遞。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM