C语言 linux如何检测文本文件的EOF?

h7appiyu  于 2022-12-29  发布在  Linux
关注(0)|答案(2)|浏览(118)

我想知道Linux是如何检测文本文件的结尾的。所有的文本文件都以空字节结尾吗?Linux利用了这一点吗?

nfs0ujit

nfs0ujit1#

现代操作系统,如Linux,不使用文件内容来检测文件的结尾,它们将文件长度存储在文件系统中,并跟踪文件位置以确定是否有更多内容可供读取。
事实上,文本文件根本不应该包含空字节,它们通常以行尾标记结束(Linux和OS/X上为\n,遗留系统上为CR/LF)。
当从诸如终端窗口之类的设备阅读时,OS依赖于设备驱动程序来提供关于文件结束的信息,在终端的情况下,这可以由用户通过输入系统特定的键组合(诸如Unix系统上的CtrlD和Microsoft操作系统上的CtrlZEnter)来发信号通知。

jhiyze9q

jhiyze9q2#

从程序的Angular 来看,EOF可以使用以下API进行检测

  1. read()返回0。
  2. getchar()返回-1。

相关问题