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

kim*_*yun 4 linux assembly system-calls null-character

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

我做了一个空文件并用鼠标垫打开az.

保存.

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

我应该把什么空字符放在文件末尾?

当我用系统调用写文件.

是啊0?还是0?

谢谢

Kei*_*ith 7

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


Ton*_*roy 5

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

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

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