我想知道Linux是如何检测文本文件的结尾的。所有的文本文件都以空字节结尾吗?Linux利用了这一点吗?
nfs0ujit1#
现代操作系统,如Linux,不使用文件内容来检测文件的结尾,它们将文件长度存储在文件系统中,并跟踪文件位置以确定是否有更多内容可供读取。事实上,文本文件根本不应该包含空字节,它们通常以行尾标记结束(Linux和OS/X上为\n,遗留系统上为CR/LF)。当从诸如终端窗口之类的设备阅读时,OS依赖于设备驱动程序来提供关于文件结束的信息,在终端的情况下,这可以由用户通过输入系统特定的键组合(诸如Unix系统上的CtrlD和Microsoft操作系统上的CtrlZEnter)来发信号通知。
\n
CR
LF
jhiyze9q2#
从程序的Angular 来看,EOF可以使用以下API进行检测
EOF
read()
getchar()
2条答案
按热度按时间nfs0ujit1#
现代操作系统,如Linux,不使用文件内容来检测文件的结尾,它们将文件长度存储在文件系统中,并跟踪文件位置以确定是否有更多内容可供读取。
事实上,文本文件根本不应该包含空字节,它们通常以行尾标记结束(Linux和OS/X上为
\n
,遗留系统上为CR
/LF
)。当从诸如终端窗口之类的设备阅读时,OS依赖于设备驱动程序来提供关于文件结束的信息,在终端的情况下,这可以由用户通过输入系统特定的键组合(诸如Unix系统上的CtrlD和Microsoft操作系统上的CtrlZEnter)来发信号通知。
jhiyze9q2#
从程序的Angular 来看,
EOF
可以使用以下API进行检测read()
返回0。getchar()
返回-1。