【发布时间】:2011-05-13 01:24:53
【问题描述】:
我试图了解目录和文件如何在文件系统级别相互关联,特别是 *nix 文件系统,如 FFS 或 EXT。
我从概念上理解,inode 有一些元数据和指向文件位置的指针,但是它们如何保存目录信息以及知道哪些文件在哪个目录中?
【问题讨论】:
标签: unix filesystems operating-system
我试图了解目录和文件如何在文件系统级别相互关联,特别是 *nix 文件系统,如 FFS 或 EXT。
我从概念上理解,inode 有一些元数据和指向文件位置的指针,但是它们如何保存目录信息以及知道哪些文件在哪个目录中?
【问题讨论】:
标签: unix filesystems operating-system
一个目录也有一个 inode。但是,它不包含指向文件内容位置的指针(因为它不是文件),而是指向目录的文件/子目录的 inode 的指针(所以它基本上是一个文件,但具有特殊的内容/标志) .此外,它还包含指向父目录及其自身的指针。
要到达某个文件,只需遍历目录结构,就像遍历树时一样 - 要找出文件的完整路径,伪代码如下所示:
parts = []
inode = inode_of(file);
parts.add(inode.name);
while(inode.parent):
parts.add(inode.parent.name)
inode = inode.parent
path = parts.reverse.join('/')
【讨论】:
目录只是一种特殊的文件。它的 inode 在模式字段中设置了 S_IFDIR 位。它的内容是一些包含文件名和 inode 编号的数据结构。
【讨论】: