我有一个FILE *
,通过致电fopen()
返回。我需要从中获取文件描述符,以便在其上调用fsync(fd)
。从文件指针获取文件描述符的功能是什么?
答案 0 :(得分:194)
正确的功能是int fileno(FILE *stream)
。它可以在<stdio.h>
中找到,并且是POSIX标准,但不是标准C.
答案 1 :(得分:34)
即使fileno(FILE *)
可能返回文件描述符,也要小心不要绕过stdio的缓冲区。如果存在缓冲区数据(读取或未刷新写入),则从文件描述符读取/写入可能会产生意外结果。
要回答其中一个问题,要将文件描述符转换为FILE指针,请使用fdopen(3)