【发布时间】:2019-06-14 10:56:13
【问题描述】:
我通常只使用文件描述符。如果链接到它的 fd 用于其他目的,我不确定 FILE * 是否会继续正常工作。 FILE *和链接的fd独立存在吗?
【问题讨论】:
-
C 规范中没有任何内容将
FILE流与与文件描述符相关的任何内容链接起来。文件描述符是文件句柄的操作系统特定实现,通常用于 POSIX 系统(如 Linux 和 macOS)。 Windows 可能会改用特定于 Windows 的HANDLE。FILE是一种抽象,C 规范只对接口(函数)和行为没有任何关于实现的说明。 -
@Someprogrammerdude,我的问题主要源于看到使用
fileno()来获取该流的 fd。这让我觉得文件流以某种方式链接到 fd。 -
@Someprogrammerdude:这个问题用 macos 和 C 标记,显然是在询问不属于 C 标准的特性,因此它们不属于 C 标准的事实是美好的。并非每个问题都与标准 C 有关。
-
该函数是 POSIX 特定函数。参见例如this
filenoreference。而在 POSIX 系统上,则 yes 文件描述符将用于实现 CFILE流。 -
@Someprogrammerdude:最初的问题明确询问了一个不属于 C 标准的特性。
标签: c macos filestream file-descriptor