当我使用open打开文件时,我希望获得返回资源的系统文件描述符。我假设这个描述符是一个INT值,通常位于/dev/fd/中。
我知道可以通过以下方式从描述符中读取:
fread("php://fd/$descriptor", $buflen);
但是现在我想获取 PHP 的 fopen()
打开的资源的描述符,有什么办法吗?
当我使用open打开文件时,我希望获得返回资源的系统文件描述符。我假设这个描述符是一个INT值,通常位于/dev/fd/中。
我知道可以通过以下方式从描述符中读取:
fread("php://fd/$descriptor", $buflen);
但是现在我想获取 PHP 的 fopen()
打开的资源的描述符,有什么办法吗?
function fd($realpath) {
$dir = '/proc/self/fd/';
if ($dh = opendir($dir)) {
while (($file = readdir($dh)) !== false) {
$filename = $dir . $file;
if (filetype($filename) == 'link' && realpath($filename) == $realpath) {
closedir($dh);
return $file;
}
}
closedir($dh);
}
return FALSE;
}
stat()
不会返回任何FD信息。它仅涉及磁盘上的文件元数据,其中没有任何关于谁持有文件打开句柄的信息。这些信息是从操作系统的文件系统处理程序中检索的。 - Marc B