Windows中的命名管道(以及其他操作系统以及整个过程)?
我有这种奇怪的情况:
我写了一个程序让我们说“Controller.exe”会产生一堆“Workers.exe”,然后Controller.exe通过“PipeN”创建一个名为“Pipe0”的命名管道。
然后,Workers.exe(以命令行arg作为管道名称启动)将连接到此管道。
所以这个controller.exe的客户生成负载启动了5个程序实例(“controller.exe”),它创建了5次Worker.exe进程
但在我的Controller.exe代码中,我创建了一个名为“Pipe0”的命名管道......“PipeN”...所以我的问题是这是如何工作的??
OS命名管道是不是广泛?就像Worker.exe如何知道连接到哪个命名管道“pipe0”?
答案 0 :(得分:0)
查看Named Pipe MSDN Page以获取该机制的说明。在您的方案中,后续尝试创建具有相同名称的管道可能会导致INVALID_HANDLE_VALUE错误。至少那是CreateNamedPipe Function Reference所说的。
答案 1 :(得分:0)
我不知道* NIX,但在Windows中它们与命名的内核对象(例如命名的互斥锁)在同一名称空间中,由所有进程共享。至于要监听的管道,将其作为命令行参数传递。