Именованный канал C # с использованием функций .NET 3.5, таких как NamedPipeClientStream - PullRequest
0 голосов
/ 12 ноября 2009

Обрабатываются ли именованные каналы в Windows (и других ОС в целом)?

У меня есть странный сценарий:

Я написал программу, скажем «Controller.exe», которая порождает кучу «Workers.exe», затем Controller.exe создает именованный канал с именем «Pipe0» ... через «PipeN».

Затем Workers.exe (запускаемый с командной строки arg в качестве имени канала) подключается к этому каналу.

Таким образом, клиент этого контроллера.exe для генерации загрузки запустил 5 экземпляров программы ("controller.exe"), которая 5 раз создала процессы Worker.exe

но в моем коде для Controller.exe я создаю именованный канал с именем "Pipe0" ... "PipeN" ... поэтому мой вопрос, как это вообще работает!?

Разве именованные каналы не распространяются на всю ОС? Как и как Worker.exe узнает, к какому именованному каналу "pipe0" подключаться?

Ответы [ 2 ]

0 голосов
/ 12 ноября 2009

Я не знаю о * NIX, но в Windows они находятся в том же пространстве имен, что и именованные объекты ядра (например, именованные мьютексы), которое используется всеми процессами. Что касается того, какой канал слушать, передайте его в качестве аргумента командной строки.

0 голосов
/ 12 ноября 2009

Посетите страницу MSDN Named Pipe для описания механизма. В вашем сценарии возможно, что последующие попытки создания каналов с тем же именем приведут к ошибкам INVALID_HANDLE_VALUE По крайней мере, так говорится в справочнике функций CreateNamedPipe .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...