为什么 C 对 stdin/stdout 流以及文件操作使用 FILE?

pro*_*873 0 c file-io file

我最近研究了 C 中的文件和输入/输出,很快发现 C 使用一种typedefed 结构FILE,通常表示为指向结构的指针。
该结构包含有关输入和输出的数据,因此操作系统和内核的较低级别部分可以轻松管理系统上的输入和输出,例如输入数据的大小、数据类型等。基本上,它是有目的地抽象
的因为它的工作方式非常低级。

我还知道FILE* xC 程序员通常使用类似的东西来表示输入和输出流。C 还允许FILE常用来指向文件。

为什么C允许程序员使用CFILE来表示文件以及输入/输出流?对我来说,这听起来非常令人困惑,而且这个关键字的字面意思FILE是这样FILE的,我认为它经常会让新程序员感到困惑,认为它仅用于指向文件。

那么为什么FILE同时用于文件和输入/输出呢?

ike*_*ami 7

尽管它的名字如此,但FILE与文件无关。例如,您不能使用FILE. 您无法使用 来删除FILE

FILE始终代表一个流。该流是否与普通文件、管道或套接字关联都无关紧要。