2012-05-12 64 views
2

我似乎无法打开Windows命名管道不止一次从PHP:为什么我不能多次打开一个命名管道?

$pipe1 = fopen($pipeName, 'r+'); // (1) 
fclose($pipe1); 
$pipe2 = fopen($pipeName, 'r+'); // (2) 
fclose($pipe2); 

(1)成功,我可以写到管道或打开阅读它的阻塞。

(2)失败

的fopen(\\ \管\编码。):未能打开流:无效的参数

“无效参数” 似乎是指到模式,但我尝试了(1)和(2)之间的所有不同模式组合,没有区别。无论它处于同一个进程还是另一个进程中,它也会失败。

我正在与创建所述管:

CreateNamedPipe("\\\\.\\pipe\\encoding", 3, 0, 5, 512, 512, 0, 0); 

其中“3”使得它的读/写和管“5”是可以被创建的实例的最大数目。我也试过CreateNamedPipe的不同参数组合,但无济于事。

有什么特别的我失踪了Windows命名管道?

+2

”服务器进程必须调用DisconnectNamedPipe,才能使用ConnectNamedPipe函数将句柄连接到另一个客户端,从而将管线句柄与其先前的客户端断开连接。“ –

+0

@ antti.huima:那是我的问题,谢谢! (你应该写出一个真实的答案!) – ladenedge

+0

大声笑ok ................ –

回答

2

“的服务器进程必须调用DisconnectNamedPipe从之前的客户端断开管手柄前手柄可以通过使用ConnectNamedPipe功能被连接到另一客户端”。 “

+0

+1对于真正的答案:P – tigrang

相关问题