在linux中,文件末尾没有空字符是正常的

时间:2011-03-28 01:06:40

标签: linux assembly system-calls null-character

在linux中,在文件末尾没有空字符是正常的吗?

我制作了一个空文件并用鼠标垫打开az。

保存。

当我用十六进制编辑器打开文件时,没有空字符但是0a就在那里。

我应该把文件的结尾放在什么空字符上?

当我使用系统调用编写文件时。

是0a吗?还是0?

感谢

4 个答案:

答案 0 :(得分:7)

Unix上的文件末尾通常没有空字符。空文本文件的字节数为零。一个空行将具有0x0A(LF,换行)字符。 Unix文本文件具有单个LF行结尾。

答案 1 :(得分:5)

文件系统记录文件中的字节数,并且所有字节都可以自由地具有任何值 - 没有特定字符/字节值是保留的sentinel值,意味着文件结束。因此,您可以在文件中的任何位置放置NUL,但不需要标记结尾。

文本文件中的每一行确实应该用换行符终止,ASCII 10 dec,0A hex(在Windows上它是一个回车符ASCII 13 dec后跟一个换行符)。如果你创建一个空文件ala echo > filename它将有一个换行符,但只是因为echo默认打印一个空行。如果您改为使用touch filename,那么它将完全为空。

当您cat > filename并在终端/控制台窗口中键入内容时,最终使用Control-D触发文件结束条件(对于DOS中的Linux / Control-Z),但该字符是没有存储在文件本身。

答案 2 :(得分:2)

0a是换行符,又名control-J或\n。在Unix中,文本文件通常不以空字符结尾。

答案 3 :(得分:-1)

这取决于谁实现了文件格式。