【问题标题】:Are ext2 directory entry names guaranteed to be null-terminated on a valid file system?ext2 目录条目名称是否保证在有效文件系统上以空结尾?
【发布时间】:2011-11-30 17:24:14
【问题描述】:

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

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

似乎没有提到目录条目的名称是否应该以空值结尾。我认为它是未定义的。有一个 name_len 字段,所以无论如何您都可以轻松打印名称。

ext2 目录名是否保证以空字符结尾?

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

谢谢!

【问题讨论】:

    标签: filesystems ext2 hobby-os


    【解决方案1】:

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

    不,不能保证它是空终止的。实际上,只有在名称 (name_len) 的长度不是 4 的倍数时才应该以 null 结尾。

    来自《了解 Linux 内核》,第 3 版:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-14
      • 2013-02-16
      相关资源
      最近更新 更多