我有一个FILE *
,通过向fopen()
的调用返回。我需要从中获取文件描述符,以便在其上拨打电话fsync(fd)
。从文件指针获取文件描述符有什么功能?如何将文件指针(FILE * fp)转换为文件描述符(int fd)?
回答
的正确功能是int fileno(FILE *stream)
。它可以在<stdio.h>
可以找到,并且是POSIX标准,但也不是标准C.
严格来说,不会有任何需要提及任何标题或库如果函数的标准确实是一个部分C库。然而,这不是标准的,这就是为什么至少提到标题是有意义的。在标准C库 – AnT 2010-07-02 23:55:06
访问功能确实需要包括标题,至少如果你的编译器期望原型(我从来不记得什么是真正的标准行为在这方面)。如果没有标题,则不会在C文件的开头定义名称。 – Novelocrat 2010-07-03 00:20:16
@Novelocrat:我不是说没有必要包含任何东西。我只是表示,为*标准*函数找到适当的头文件名总是很容易的。即在答案中提及确切的标题名称并不重要。 – AnT 2010-07-03 01:51:43
即使fileno(FILE *)
可能会返回一个文件描述符,要非常小心,不要绕过标准输入输出的缓冲区。如果存在缓冲区数据(读取或未刷新写入),则从文件描述符读取/写入可能会给您带来意想不到的结果。
要回答的问题一边一个,一个文件描述符转换为一个文件指针,使用fdopen(3)
我不认为这对专门寻找这个问题的人有帮助,而且这已经在OP撰写之前一个月的OP的评论部分得到了回答。这更多的是与真实信息相对立的逻辑澄清。 – kevr 2018-02-01 15:03:42
- 1. 将char指针指向内存文件并带有文件描述符
- 2. fileno转换FILE描述符C
- 3. 管理指向套接字文件描述符的指针
- 4. 为什么我们需要文件描述符和文件指针
- 5. 套接字的描述符可以转换为文件指针吗?
- 6. 从文件描述符获取文件指针
- 7. 带文件描述符而不是文件指针的getline()
- 8. 文件描述符和文件指针有什么区别?
- 9. 如何更改与stdin文件描述符关联的fd?
- 10. 文件描述符,文件指针和文件位置指示符之间的关系
- 11. 坏文件描述符文件无
- 12. 如何将链接描述转换为有效文件名
- 13. 将int转换为指针
- 14. 关闭文件描述符
- 15. 文件描述符轮询
- 16. 如何从文件描述符中获取FILE *流?
- 17. 如何将shared_ptr <FILE>转换为C++中的FILE *文件?
- 18. 文件描述符饥饿和阻断文件描述符
- 19. SOCKET文件描述
- 20. 保留文件描述符,以防止FD耗尽
- 21. 确定文件结构(描述文件描述符)是否为'特殊文件'(即块/字符设备)
- 22. 如何从文件描述符获取文件名和路径?
- 23. 如何通过int描述符找出文件名? (或“?可我..”)
- 24. 解决文件描述符文件名/文件路径
- 25. 如何在Python中将本地换行符写入文件描述符?
- 26. 关闭文件指针而不关闭底层文件描述符
- 27. 选择在普通文本文件的文件描述符
- 28. 文件描述符返回错误值
- 29. 使用文件描述符过程
- 30. 转换字符数组为int指针
自答案在这个“危险”的形式鼓励。 – dmckee 2010-07-02 23:18:32
或者你可以打开与开放(2),你将有一个文件描述符从开始 – 2013-06-29 16:13:34
和逆文件:如何从一个文件描述符文件指针?](http://stackoverflow.com/问题/ 1941464 /如何到获得-A-文件指针从-A-文件描述符) – 2013-10-01 20:35:54