inodes处理目录

时间:2010-11-20 11:23:31

标签: unix filesystems operating-system

我试图了解目录和文件在文件系统级别如何相互关联,特别是* nix文件系统,如FFS或EXT。

我从概念上理解一个inode有一些元数据和指向文件位置的指针,但它们如何保存目录信息并知道哪些文件在哪个目录中?

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

答案 2 :(得分:0)

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