ext2目录条目名称是否保证在有效文件系统上以空值终止?

时间:2011-10-04 13:47:24

标签: filesystems ext2 hobby-os

我认为这是一个简单的问题,但我找不到答案。我主要是阅读这些规格:

http://www.nongnu.org/ext2-doc/ext2.html

似乎没有提到目录条目的名称是否应该以空值终止。我认为这是未定义的。有一个name_len字段,因此您可以轻松打印该名称。

ext2目录名是否保证以空值终止?

我问,因为在我的业余爱好操作系统上测试我的ext2驱动程序时,我注意到当我打印一些目录名时,最后会出现一些垃圾字符。如果我只是打印name_len字符,一切都很好,虽然它是好的,如果它是空终止的。

谢谢!

1 个答案:

答案 0 :(得分:5)

我知道这是一个老问题,但对于其他可能会发现这个问题的人来说:

不,不保证无效终止。实际上,如果名称(name_len)的长度不是4的倍数,它应该仅为空终止。

从了解Linux内核,第3版:

  

...目录条目的长度始终是4的倍数,因此,如果需要,在文件名末尾添加空字符(\ 0)以填充。 name_len字段存储实际的文件名长度

下面的例子(来自书中)。请注意,名称“sbin”没有空终止,因为length(4)是4的倍数:

enter image description here