代码之家  ›  专栏  ›  技术社区  ›  Phil Miller

如何将文件指针(file*fp)转换为文件描述符(int fd)?

  •  156
  • Phil Miller  · 技术社区  · 14 年前

    我有一个 FILE * ,通过呼叫返回 fopen() . 我需要从中获取一个文件描述符,以便像 fsync(fd) 关于它。从文件指针获取文件描述符的功能是什么?

    2 回复  |  直到 7 年前
        1
  •  193
  •   SO Stinks ennuikiller    9 年前

    正确的功能是 int fileno(FILE *stream) . 它可以在 <stdio.h> ,并且是POSIX标准,但不是标准C。

        2
  •  34
  •   Brett Wolfington    9 年前

    即使 fileno(FILE *) 可能会返回一个文件描述符,小心不要绕过stdio的缓冲区。如果存在缓冲区数据(读或写未刷新),则从文件描述符进行读/写可能会产生意外的结果。

    要回答其中一个问题,要将文件描述符转换为文件指针,请使用 fdopen(3)