在php中,pclose和fclose有什么区别

在php中,pclose和fclose有什么区别,php,resources,pipe,Php,Resources,Pipe,我有一些用于管道和文件的代码。 在操作结束时,我的功能应该关闭资源 我可以用fclose关闭管道资源吗? php跟踪如何关闭资源似乎并不难,但是 我看到两个函数 我用popen函数创建管道 否则,我需要一种方法来区分管道和文件资源 get_resource_type returns "stream" for both resources. 或者我必须实现昂贵的包装器类 class PipeStream { public function __desctruct() { pclose($

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

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

我用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); }
}
阅读的文档。它用于关闭由命名管道而不是由命名管道创建的流程资源

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

  • posix_mkfifo()来创建它们
  • fopen()来打开它们
  • fclose()来关闭它们
如您所见,要创建fifo,它需要posix扩展名,这意味着它不能在Windows上工作,因为Windows本身不支持命名管道(或通常的posix标准)

请阅读的文档。它用于关闭由命名管道而不是由命名管道创建的流程资源

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

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

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

我在代码重用方面有问题。现在要实现通用函数,我只看到一个解决方案,就是像上面那样编写包装器类。但它看起来像是重新发明轮子。你可以像普通文件一样打开、关闭和读/写管道,这个功能不需要包装器。如果您想创建它们,它就是。但在使用命名管道时不要忘记:这在Windows上不起作用。我在代码重用方面有问题。现在要实现通用函数,我只看到一个解决方案,就是像上面那样编写包装器类。但它看起来像是重新发明轮子。你可以像普通文件一样打开、关闭和读/写管道,这个功能不需要包装器。如果您想创建它们,它就是。但在使用命名管道时不要忘记:这在Windows上不起作用。