2009-11-12 3 views
0

Именованные каналы в Windows (и другие ОС, а также процесс широкий)?Именованная труба C# с использованием функций .NET 3.5, таких как NamedPipeClientStream

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

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

Тогда Workers.exe (кто запущен с командной строкой arg как имя трубы) подключитесь к этому каналу.

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

но в моем коде для Controller.exe I создайте именованный канал под названием «Pipe0» ... «PipeN» ... так что мой вопрос в том, как это работает !?

Не названы ли трубы общей шириной? Как и как Worker.exe знает, к какому именованному каналу «pipe0» подключиться?

ответ

0

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

+0

Право, это то, что я делаю ... так что вы говорите, что «PipeO» является глобальным, что любой процесс, ведущий разговор с «Pipe0», получает ту же ссылку на канал? – halivingston

+0

Да, если вы не смешиваете заглавную букву O и цифру 0. – erikkallen

0

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

Смежные вопросы