fopen和获取系统文件描述符

时间:2011-04-08 21:10:57

标签: php file fopen file-descriptor

当我使用open打开文件时,我想获取返回资源的系统文件描述符。我假设描述符是INT值,通常在/ dev / fd /

我知道我可以通过执行以下操作来读取描述符:

fread("php://fd/$descriptor", $buflen);

但现在我想获取PHP fopen()打开的资源的描述符。有办法吗?

2 个答案:

答案 0 :(得分:3)

这是一种相当愚蠢的方式但它有效!

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;
}

答案 1 :(得分:0)

因为您正在编写保险丝包装,请考虑not duplicating the effort of this PECL extension。当然,它也没有任何令人讨厌的文件,所以这最好是在黑暗中刺伤。