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

时间:2010-07-02 16:01:28

标签: c linux unix file posix

我有一个FILE *,通过致电fopen()返回。我需要从中获取文件描述符,以便在其上调用fsync(fd)。从文件指针获取文件描述符的功能是什么?

2 个答案:

答案 0 :(得分:194)

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

答案 1 :(得分:34)

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

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