我想知道Linux打开一个文件都有什么过程?
我看Linux打开文件有两种解释
第一种就是通过一个目录,找一个文件名所对应索引节点号,进而去找到索引节点,
第二个就是通过结构体dentry找到文件名对应的索引节点指针,然后再找到索引节点
不知道这两种说法到底是否矛盾 有明白的请赐教~~
学得不好 问的问题可能里面有理解错误的地方 见笑了。。。。。。。。。。
补充:首先感谢大家的回答
通过查找资料我查到这个了 似乎解释点问题
http://blog.csdn.net/yinchao1217/article/details/5635344
但是其中的索引节点号 在Linux代码中哪地方体现了 我还是搞不清
另外附加Linux内核代码打开文件解释
我仅知道 vi 打开文件做操作。看问题 表示没看懂···············
Linux的目录也是文件的一种,每一个文件(目录或普通文件)都有与之相关的元信息,对于一个文件在Linux中用stat结构来表示。
目录文件的内容主体就是name->inode记录集。我们可以用opendir来返回他的Linux下结构化的表示struct dirent
而对于普通文件来说,stat结构中包含该文件的inode号,inode就是文件在磁盘上的分配记录,我们可以通过查看inode得到文件的具体内容。
具体可以参见《Unix/Linux编程实践教程》第四章,这本书是我目前找到的这方面最好的资料。
嗯 这个倒是彻底解释了 从目录 到索引节点号 再到索引节点 再到data Area过程的寻找
通过文件名存取文件时,文件系统内部的操作过程:
通过文件名在目录中查找对应的i节点,通过i节点存取文件数据。
i节点不是以文件的形式出现。
i节点是一个长度固定的表,包含了描述一个文件必须的全部信息。
你的后两句我倒是都知道 就是第一点"通过文件名在目录中查找对应的i节点" 这个属于第一种解释找对应的索引节点号去找索引节点。。。。