我似乎无法从 PHP 多次打开 Windows 命名管道:
$pipe1 = fopen($pipeName, 'r+'); // (1)
fclose($pipe1);
$pipe2 = fopen($pipeName, 'r+'); // (2)
fclose($pipe2);
(1) 成功,我可以写入管道或在其上打开阻塞读取。
( 2) 失败
fopen(\\.\pipe\encoding):打开流失败:参数无效
“无效参数”似乎是指mode,但我已经尝试了 (1) 和 (2) 之间所有不同的模式组合,没有任何区别。无论是在同一个进程还是另一个进程中,它也会失败。
我正在创建管道:
CreateNamedPipe("\\\\.\\pipe\\encoding", 3, 0, 5, 512, 512, 0, 0);
其中“3”使其成为读/写管道,“5”是可以创建的最大实例数。我也为CreateNamedPipe尝试了不同的参数组合,但无济于事。
Windows 命名管道有什么特别之处吗?