我想知道Linux打开一个文件都有什么过程? 我看Linux打开文件有两种解释 第一种就是通过一个目录,找一个文件名所对应索引节点号,进而去找到索引节点, 第二个就是通过结构体dentry找到文件名对应的索引节点指针,然后再找到索引节点 不知道这两种说法到底是否矛盾 有明白的请赐教~~ 学得不好 问的问题可能里面有理解错误的地方 见笑了。。。。。。。。。。

推荐图书

  • Linux系统管理技术手册(第2版)


1个回答

Linux的目录也是文件的一种,每一个文件(目录或普通文件)都有与之相关的元信息,对于一个文件在Linux中用stat结构来表示。

目录文件的内容主体就是name->inode记录集。我们可以用opendir来返回他的Linux下结构化的表示struct dirent

而对于普通文件来说,stat结构中包含该文件的inode号,inode就是文件在磁盘上的分配记录,我们可以通过查看inode得到文件的具体内容。

通过文件名存取文件时,文件系统内部的操作过程:    通过文件名在目录中查找对应的i节点,通过i节点存取文件数据。    i节点不是以文件的形式出现。    i节点是一个长度固定的表,包含了描述一个文件必须的全部信息。