我有一个 FILE *
,通过调用 fopen()
返回。我需要从中获取文件描述符,以便在其上进行 fsync(fd)
之类的调用。从文件指针获取文件描述符的函数是什么?
原文由 Phil Miller 发布,翻译遵循 CC BY-SA 4.0 许可协议
我有一个 FILE *
,通过调用 fopen()
返回。我需要从中获取文件描述符,以便在其上进行 fsync(fd)
之类的调用。从文件指针获取文件描述符的函数是什么?
原文由 Phil Miller 发布,翻译遵循 CC BY-SA 4.0 许可协议
即使 fileno(FILE *)
可能返回文件描述符,也要非常小心不要绕过 stdio 的缓冲区。如果存在缓冲区数据(读取或未刷新的写入),则从文件描述符读取/写入可能会给您带来意想不到的结果。
要回答一个附带问题,要将文件描述符转换为 FILE 指针,请使用 fdopen(3)
原文由 Mark Gerolimatos 发布,翻译遵循 CC BY-SA 3.0 许可协议
7 回答5.3k 阅读
4 回答4k 阅读
2 回答5.9k 阅读✓ 已解决
2 回答2.5k 阅读✓ 已解决
1 回答2.3k 阅读✓ 已解决
1 回答3.3k 阅读
2 回答3.2k 阅读
正确的功能是
int fileno(FILE *stream)
。它可以在<stdio.h>
中找到,它是 POSIX 标准,但不是标准 C。