什么是目录项?

什么是目录项?

我必须在我的一些 C 项目中使用 dirent.h。根据网上找到的各种不同的描述,我得出一个模糊的想法:目录项是一种数据结构,它告诉我们有关文件的一切。目录条目到底是什么?

答案1

并非有关文件的所有内容,有关文件的大部分元数据都存储在文件 inode 中,而不是目录条目中。目录项只是一个索引节点和文件名的结构 - 足够的信息可以从文件名转换为索引节点并获取实际文件。

您可以放心地将目录想象为字典:

filename1 :> inode1
filename2 :> inode2
....

然后,您只需跟踪索引节点号(基本上是索引节点的唯一地址——一种指针)并找到所有权限、所有权数据、日期、扩展属性,当然还有文件的内容(如果它是一个文件) 。当然,目录项也可以是另一个目录、符号链接、设备节点或类似的东西。你必须去那里才能弄清楚。

答案2

目录项基本上是文件名到其索引节点的映射。用户通常通过文件名访问文件,但是内核无法理解此类文件名。

内核使用文件唯一的索引节点来识别文件。
这个inode基本上包含了文件除了文件名和文件中的实际数据之外的所有数据。文件名到索引节点的这种映射是在称为目录项的数据结构中维护的。

请记住,许多条目(在相同或不同的目录中)可能标识相同的文件(相同的 inode)。所以,给定一个名字,你就可以很容易地获得它的inode;给定一个索引节点,查找名称要困难得多(find实用程序就是实现此目的的工具)。

答案3

来自 Unix 环境中的高级编程 (APUE) 第 1.4 条:

什么是目录?

A目录是一个包含目录条目的文件。

什么是目录项?

从逻辑上讲,我们可以想到每一个 目录项包含文件名以及描述文件属性的信息结构。文件的属性包括文件的类型(普通文件、目录)、文件的大小、文件的所有者、文件的权限(其他用户是否可以访问该文件)以及文件何时被访问。最后修改。stat和函数 fstat返回包含文件所有属性的信息结构。

对于相关材料,您可以阅读§4.14APUE

强文本

相关内容