我似乎无法从PHP中多次打开Windows命名管道:
$pipe1 = fopen($pipeName, 'r+'); // (1)
fclose($pipe1);
$pipe2 = fopen($pipeName, 'r+'); // (2)
fclose($pipe2);
(1)成功,我可以写入管道或打开阻塞读取。
(2)失败
fopen(\\。\ pipe \ encoding):无法打开流:无效参数
“无效参数”似乎是指模式,但我尝试了(1)和(2)之间所有不同的模式组合,没有区别。无论是在同一个流程还是其他流程中,它也都会失败。
我正在创建管道:
CreateNamedPipe("\\\\.\\pipe\\encoding", 3, 0, 5, 512, 512, 0, 0);
其中'3'使其成为读/写管道,'5'是可以创建的最大实例数。我也为CreateNamedPipe尝试了不同的参数组合,但没有用。
对于Windows命名管道,我有什么特别的缺失吗?
答案 0 :(得分:2)
“在使用ConnectNamedPipe函数将句柄连接到另一个客户端之前,服务器进程必须调用DisconnectNamedPipe以断开管道句柄与其先前的客户端。”