当前位置: 首页 > 面试题库 >

为什么索引节点号从1开始而不是0?

宋伟泽
2023-03-14
问题内容

C语言约定从0开始计数数组索引。为什么inode编号从1开始而不是0?

如果保留索引节点0供某些特殊用途,那么索引节点0的意义是什么?


问题答案:

通常,保留索引节点0,因为返回值0通常表示发生错误。Linux内核中的多种方法(尤其是在所有文件系统共享的VFS层中)均返回ino_t,例如find_inode_number。

还有更多保留的索引节点号。例如在ext2中:

#define EXT2_BAD_INO             1      /* Bad blocks inode */
#define EXT2_ROOT_INO            2      /* Root inode */
#define EXT2_BOOT_LOADER_INO     5      /* Boot loader inode */
#define EXT2_UNDEL_DIR_INO       6      /* Undelete directory inode */

和EXT3有:

#define EXT3_BAD_INO             1      /* Bad blocks inode */
#define EXT3_ROOT_INO            2      /* Root inode */
#define EXT3_BOOT_LOADER_INO     5      /* Boot loader inode */
#define EXT3_UNDEL_DIR_INO       6      /* Undelete directory inode */
#define EXT3_RESIZE_INO          7      /* Reserved group descriptors inode */
#define EXT3_JOURNAL_INO         8      /* Journal inode */

和EXT4有:

#define EXT4_BAD_INO             1      /* Bad blocks inode */
#define EXT4_ROOT_INO            2      /* Root inode */
#define EXT4_USR_QUOTA_INO       3      /* User quota inode */
#define EXT4_GRP_QUOTA_INO       4      /* Group quota inode */
#define EXT4_BOOT_LOADER_INO     5      /* Boot loader inode */
#define EXT4_UNDEL_DIR_INO       6      /* Undelete directory inode */
#define EXT4_RESIZE_INO          7      /* Reserved group descriptors inode */
#define EXT4_JOURNAL_INO         8      /* Journal inode */

其他文件系统使用ino 1作为根inode编号。通常,文件系统可以自由选择其inode编号和保留的ino值(0除外)。



 类似资料:
  • 问题内容: 在Java的其他任何地方,任何带有索引的内容都从0开始。这里是否有进行更改的原因,或者这只是不良的设计? 问题答案: 历史上,数据库对绑定参数使用基于1的索引。这可能反映了关系数据库在集合论和数学中的起源,即索引元素以1开头,并使用零表示空集或空集。 在shell脚本和正则表达式中,零索引通常表示“特殊”。例如,对于shell脚本,第零个“参数”实际上是被调用的命令。 JDBC的选择是

  • 问题内容: 在这里,我想索引从1开始的内部for循环,但它没有按预期工作,我还更改了j 问题答案: Java数组始终基于0。您无法更改该行为。您可以从另一个索引填充或使用它,但是不能更改基本索引。 如果您对此感兴趣,请在JLS§10.4中定义。 数组的访问由数组访问表达式(第15.13节)访问,该数组访问表达式包括一个表达式,其值是数组引用,后跟由[和]包围的索引表达式,如A [i]所示。 所有数

  • 问题内容: 的OpenJDK代码包括以下行: 为什么在这里使用,而不是?我很好奇。 问题答案: 要强调的是,数字是2的幂,而不是一个完全任意的选择。因此,它警告开发人员尝试不同的数字,他们应该在模式中使用其他数字(例如或,而不是),这样他们就不会破坏依赖于两个要求的幂的方法。有评论略高于: 任何一个的容量(表长度)始终是2的幂。之所以这样设计,是因为它允许使用快速的按位AND操作()将每个键的哈希

  • 我注意到bootstrap.js代码中的函数前面有一个+号,我想知道这有什么影响,还是只是为了好玩?

  • 当我的元组以索引1开始时,我正在正常工作,是不是语言发生了什么变化,而我却不知道呢? 我的出口不是应该是“MMA8”和“MMA20”吗?

  • 我在我的应用程序中使用了Neo4j的Spring数据,我在应用程序中引入了delete cypher查询,并在cypher查询生成器中看到了一些wierd节点名称,开始为3;。例如,我有node Vote,看到DB中也有_Vote。它们为什么出现?有什么地方做错了? 谢啦