文件结尾 End-of-file
(重定向自EOF)
文件结尾(英语:End of File,缩写为EOF),是操作系统无法从数据源读取更多数据的情形。数据源通常为文件或串流。
在C标准函式库中,像getchar这样的数据读取函数返回一个与符号(宏)EOF
相等的值来指明文档结束的情况发生,EOF
的真实值与不同的平台有关(但通常是-1,比如在glibc中),并且不等于任何有效的字符代码。块读取函数返回读取的字节数,如果它小于要求读取的字节数,就会出现一个文档结束符。
从一个终端的输入从来不会真的“结束”(除非设备被断开),但把从终端输入的数据分割成多个“文档”却很有用,因此一个关键的串行被保留下来来指明输入结束。在UNIX和AmigaDOS中,将击键翻译为EOF的过程是由终端的驱动进程完成的,因此应用进程无需将终端和其它输入文档区分开来。Unix平台的驱动进程在行首传送一个传输结束字符(Control-D,ASCII编码为为04)来指明文档结束。在AmigaDOS中,驱动进程传送一个Control-\来指明文档结束(而Control-D被用作中断字符)。要向输入流中插入一个真正的Control-D字符,用户需要把一个“引用”命令字符放在它的前面(通常是Control-V,表示下一个字符不作为控制字符,而是按照字面量使用)。