为什么文本文件以Ctrl+Z结尾
今天是一则老故事
实际上,文本文件并不需要以Ctrl+Z结尾,但是,这一转换还存存在于某些命令中。
(尽管,幸运的是,这些命令,在现在看来,都是很小的,不怎么影响使用)
故事要回到CP/M操作系统所存在的上古时代,CP/M是一款操作系统的名字,后来它被MS-DOS所取代。为什么这么说?因为英特尔的8086处理器可以看做是8080的取代者,那么,为8086处理器所开发的操作系统,也应该是为8080开发的操作系统的取代者。
在CP/M操作系统中,文件以扇区的形式进行存储,每个扇区的大小为128个字节。如果你的文件为64个字节,则这个文件可以完全保存在一个扇区中。一个特殊的地方是,操作系统是以一个文件占用的扇区数量来表示文件的大小的,所以,如果你的文件不是128的整数倍,则你需要采用某些方式来表达文件真正的结尾在哪个地方。
这个时候,Ctrl + Z这种技法就诞生了。
按照转换惯例,文件所在的最后一个扇区的未使用空间都会被Ctrl+Z这一字符填充。同时,为了保持对CP/M的兼容,MS-DOS做了Ctrl+Z的转换。所以当你从一台CP/M系统传输一个文件到新的PC时,你就不会碰到文件结尾的垃圾数据了。
Ctrl + Z已经不再被使用很多年了。MS-DOS系统是以字节为单位来记录文件的大小,而不是以扇区数量。但是这一转换还是会存在一些古老的DOS命令中,例如”COPY”。
总结
故事是老故事,但是它确确实实在历史长河中发生过,向这些上古系统的开发者,敬一杯酒。
最后
Raymond Chen的《The Old New Thing》是我非常喜欢的博客之一,里面有很多关于Windows的小知识,对于广大Windows平台开发者来说,确实十分有帮助。
本文来自:《Why do text files end in Ctrl+Z?》
相关推荐
- 调度算法:Sleep并不总是如你预想的那样起作用
- Posted on 04月25日
- 关于Windows消息的分类和使用场景
- Posted on 08月10日
- 实战经验:记录一次蓝屏崩溃诊断经历
- Posted on 11月05日
- 谈谈PulseEvent的缺陷
- Posted on 03月09日
评论已关闭。