是否可以在不使用 fileno(FILE* file)
的情况下从文件指针获取文件描述符?
特别是,是否可以仅使用 C 标准库中的函数?
(我的问题实际上是因为 fileno()
是一个 POSIX 标准函数
但不是标准 C.)
最佳答案
没有。
文件描述符不是标准 C 的一部分。C 标准没有义务要求系统使用文件描述符来实现标准 I/O 库。因此,无法使用标准 C 从文件流中获取文件描述符;文件描述符的概念并不是 C 标准的一部分。这就是为什么 fileno()
不是标准的 C 函数。
C11 标准 §7.21 Input/output <stdio.h>
没有使用文件描述符指定任何函数。
If
fileno()
is not a standard function, what's the value that the functionopen()
returns?
open()
函数也不是标准 C 的一部分;使用文件描述符的函数都不是标准 C 的一部分。 POSIX standard确实提供了使用文件描述符的函数——其中很多,包括 open()
和 fileno()
.大多数系统都提供了 POSIX 未定义但使用文件描述符的扩展函数。
关于c - 从没有 fileno() 的文件指针获取文件描述符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56820378/