2011-10-04 46 views
2

我认为这将是一个简单的问题,但我找不到答案。我主要是在阅读这些规格:ext2目录项名称是否保证在有效的文件系统上以空值终止?

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

它似乎并没有提及是否一个目录条目的名称应该是空值终止。我在想这是不确定的。有一个name_len字段,所以您可以轻松地打印名称。

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

我问,因为在我的爱好OS上测试我的ext2驱动程序时,我注意到当我打印一些目录名时,一些垃圾字符出现在最后。如果我简单地打印name_len字符,一切都很好,但如果它以null结尾,它会很好。

谢谢!

回答

5

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

不,它不能保证为NULL终止。事实上,它应该只空终止,如果名称(name_len)的长度不是4

多从理解Linux内核,第三版:

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

以下示例(来自该书)。请注意,名称“sbin”没有空终止,因为长度(4)是4的倍数:

enter image description here

相关问题