代码之家  ›  专栏  ›  技术社区  ›  R.. GitHub STOP HELPING ICE

如何确定文件描述符是否可查找?

  •  11
  • R.. GitHub STOP HELPING ICE  · 技术社区  · 14 年前

    lseek(fd, 0, SEEK_CUR); 并检查返回值是否为-1,但我不确定这是否会给出假阴性或假阳性。使用 fstat 假设什么类型的文件是可查找的/不可查找的听起来并不是一个好主意。还有其他想法吗?

    2 回复  |  直到 14 年前
        1
  •  10
  •   casablanca    14 年前

    这个 lseek 这种方法似乎是合理的。它当然不会造成假阴性——如果真的是这样,那么它的实现就出了严重的问题。另外,根据 POSIX spec

        2
  •  3
  •   janneb    14 年前

    可以使用fstat(),然后使用stat结构的mode字段上的S\u ISREG宏来检查它是否是常规文件;普通档案, per definiton

    但是,检查lseek()和errno==ESPIPE的返回值也应该有效。原则上, the effect of lseek() on devices which are incapable of seeking is implementation-defined