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

我有一个FILE * ,通过调用fopen() 。 我需要从它得到一个文件描述符,以调用它像fsync(fd) 。 什么是从文件指针获取文件描述符的function?

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

即使fileno(FILE *)可能会返回一个文件描述符,请注意不要绕过stdio的缓冲区。 如果有缓冲区数据(读取或不刷新写入),则从文件描述符读取/写入可能会给您带来意想不到的结果。

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