是否有一种独立于平台的方式将EOF符号写入
Ruby中的字符串.在* nix我相信符号是^ D,但在Windows中是^ Z,这就是我问的原因.
解决方法
EOF不是一个角色,它是一个国家.终端使用控制字符来表示此状态(C-d).没有这样的东西是“读一个EOF角色”和写一个相同的东西.如果您正在写文件,请在完成后关闭它.见
mailing list post:
It sounds like you are thinking of EOF
as an in-band but special character
value that marks the end of file. It
is better to think of it as an
out-of-band sentinel value. In C,EOF
is usually -1 and the associated API
specifies integer return values so
that EOF is guaranteed to never be
confused with a valid in-band value.
这里有一些证据(在Unix上这样做):
$cat > file hello^V^Dworld ^D $cat file helloworld
键入^ V ^ D将控制字符字面插入文件中.键入world并输入后,^ D将关闭管道.该文件最终为12个字节长10个字母,另外两个用于^ D和换行符.最终^ D不会在文件中结束.它只是被终端/ shell用来关闭管道.