【问题标题】:How can I open a named pipe?如何打开命名管道?
【发布时间】:2011-03-15 18:44:32
【问题描述】:
  • Ubuntu 9.10 / CentOS 5.5
  • PHP 5.2.10-2ubuntu6.7 / 5.2.11

下面的最小测试用例给出了这个输出:

字符串(3) "foo"

警告:stat() [function.stat]: stat failed for Resource id #3 in /[...]/mkfifo.php on line 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

【问题讨论】:

    标签: php file-io named-pipes


    【解决方案1】:

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

    Resource id #3 证明您的管道已正确打开

    使用stat($pipe_name) 获取有关fifo 的信息。
    stream_get_meta_data($pipe) 为打开的文件句柄。

    【讨论】:

      猜你喜欢
      • 2010-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-12
      • 1970-01-01
      相关资源
      最近更新 更多