2010-11-20 79 views
0

我想了解目录和文件在文件系统级别,特别是* nix文件系统如FFS或EXT如何相互关联。索引节点处理目录

我的理解是,inode有一些元数据和指向文件位置的指针,但他们如何保持目录信息并知道哪些文件位于哪个目录?

回答

2

目录也有一个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('/') 
0

目录只是一种特殊的文件。它的inode在模式字段中设置了S_IFDIR位。它的内容是一些保存文件名和inode数字的数据结构。