2011-03-15 66 views
0
  • Ubuntu的9.10/5.5的CentOS
  • PHP 5.2.10-2ubuntu6.7/5.2.11

以下最小测试用例给出这个输出:如何打开命名管道?

串(3)“富“

警告:STAT()[function.stat]:STAT在/[...]/mkfifo.php失败资源ID#3在第10行

布尔(假)

<?php 

$pipe_name = 'foo'; 
if(!file_exists($pipe_name) && !posix_mkfifo($pipe_name, 0777)){ 
    echo 'foo'; 
    exit(1); 
} 
var_dump($pipe_name); 
$pipe = fopen($pipe_name, 'r+'); 
var_dump(stat($pipe)); 

?> 

当然,我做错了什么?我使用了r +,因为它应该是“适合我”的http://php.net/manual/en/function.posix-mkfifo.php#89642,但正如你所看到的,我甚至没有机会去做非阻塞部分。另一种更详细的解决方案,我还没有尝试过:http://php.net/manual/en/function.shell-exec.php#52826

回答

3

我认为你的错误是由于使用stat()造成的。您给它一个打开的文件资源,但它只能与$filename一起使用。

你管通过Resource id #3

使用stat($pipe_name)证明,以获取有关信息的fifo被正确打开。
stream_get_meta_data($pipe)用于打开的文件句柄。

+0

** facepalm **我没有检查*全部*文档。谢谢。 :) – Grault 2011-03-15 19:09:06

相关问题