1

我有一些适用于管道和文件的代码。在操作结束时,我的功能应该关闭资源。

我可以用 fclose 关闭管道资源吗?php 似乎并不难跟踪如何关闭资源,但我看到了 2 个函数。

我用 popen 函数创建管道。

否则我需要一种方法来区分管道和文件资源。

get_resource_type returns "stream" for both resources.

或者我必须实现昂贵的包装类。

class PipeStream {
    public function __desctruct() { pclose($this->resource); }
}
class FileStream {
    public function __desctruct() { fclose($this->resource); }
}
4

1 回答 1

1

阅读pclose(). 它用于关闭由popen()而不是命名管道创建的进程资源。

如果您正在使用所谓的命名管道,它们是存储在文件系统中的对象,请使用:

  • posix_mkfifo() 来创建它们
  • fopen() 打开它们
  • fclose() 关闭它们

如您所见,要创建 fifo,它需要posix扩展,这意味着它不能在 Windows 上运行,因为 Windows 本身不支持命名管道(或一般的 posix 标准)

于 2013-07-11T17:32:05.187 回答