Binary 什么是EOF?

Binary 什么是EOF?,binary,Binary,EOF是位于每个文件末尾的特殊字节序列,还是内核通知的某种异常(中断)?很久以前,在DOS机器上,它通常由^Z指示,但是现在,内核到达了文件的末尾,并在程序尝试进一步读取时通知程序。我使用ASCII EOF字符将数据文件分离为一个人类可读的头文件,后跟二进制数据。这使得机械工程师从测试中所需要的所有东西都保存在一个文件中,同时保持足够小,可以放进软盘。(这是几年前的事了!)EOF角色告诉大多数文本显示程序停止。任何想要快速查看文件头的人都可以在命令shell中使用“print”命令(就是这样吗?

EOF是位于每个文件末尾的特殊字节序列,还是内核通知的某种异常(中断)?

很久以前,在DOS机器上,它通常由
^Z
指示,但是现在,内核到达了文件的末尾,并在程序尝试进一步读取时通知程序。

我使用ASCII EOF字符将数据文件分离为一个人类可读的头文件,后跟二进制数据。这使得机械工程师从测试中所需要的所有东西都保存在一个文件中,同时保持足够小,可以放进软盘。(这是几年前的事了!)EOF角色告诉大多数文本显示程序停止。任何想要快速查看文件头的人都可以在命令shell中使用“print”命令(就是这样吗?)

现在,EOF字符大多不在文件中使用,至少在我居住的世界的一小部分是这样。实际上,除了NUL、ESC和CR/LF之外,ASCII控制字符都不再有任何用途


EOF在某些流媒体协议中可能有某些用途,但这超出了我的专业知识范围,因此我将其留给其他人来解决。

EOF是C stdio库返回的一个特殊代码,表示不再从
文件中读取数据。不同的操作系统都有自己记录文件大小/结尾的方法,也有自己将文件大小/结尾返回给用户程序的方法,这些方法将由该操作系统上的C标准库实现转换为EOF返回代码。

只需强调一点:在该文件格式中,EOF将出现在开头附近,在十几行左右的文本之后。ASCII中没有EOF——有ETX(文本的结尾——ctrl-C)和EOT(传输的结尾——ctrl-D)和EM(媒体的结尾——ctrl-Y),甚至还有ETB(传输的块的结尾——ctrl-W),但没有EOF。MSDOS
^Z
是CP/M的遗留问题,其中文件的长度始终是128字节的倍数。对于文本文件,最后一块128字节用
^Z
s填充。^Z仍在MS-DOS(或Windows命令提示符)中用于标记文本文件中的文件结束。例如,当您使用COPY命令连接二进制文件时,了解这一点很重要。必须使用/b标志,否则文件将在第一个^Z字符处被截断。