首页 新闻 会员 周边

关于Linux打开一个文件的过程

0
悬赏园豆:5 [待解决问题]

我想知道Linux打开一个文件都有什么过程?

我看Linux打开文件有两种解释

第一种就是通过一个目录,找一个文件名所对应索引节点号,进而去找到索引节点,

第二个就是通过结构体dentry找到文件名对应的索引节点指针,然后再找到索引节点

不知道这两种说法到底是否矛盾  有明白的请赐教~~

学得不好 问的问题可能里面有理解错误的地方 见笑了。。。。。。。。。。

补充:首先感谢大家的回答

通过查找资料我查到这个了 似乎解释点问题

http://blog.csdn.net/yinchao1217/article/details/5635344

但是其中的索引节点号 在Linux代码中哪地方体现了 我还是搞不清

另外附加Linux内核代码打开文件解释

http://blog.csdn.net/f413933206/article/details/5701913

as_的主页 as_ | 初学一级 | 园豆:197
提问于:2012-07-27 10:31
< >
分享
所有回答(3)
0

我仅知道 vi 打开文件做操作。看问题 表示没看懂···············

被日子混了 | 园豆:225 (菜鸟二级) | 2012-07-27 11:46
0

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

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

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

 

具体可以参见《Unix/Linux编程实践教程》第四章,这本书是我目前找到的这方面最好的资料。

Jerry Chou | 园豆:2642 (老鸟四级) | 2012-07-27 11:54

嗯 这个倒是彻底解释了 从目录 到索引节点号 再到索引节点 再到data Area过程的寻找

支持(0) 反对(0) as_ | 园豆:197 (初学一级) | 2012-07-28 09:42
0

通过文件名存取文件时,文件系统内部的操作过程:

  通过文件名在目录中查找对应的i节点,通过i节点存取文件数据。

  i节点不是以文件的形式出现。

  i节点是一个长度固定的表,包含了描述一个文件必须的全部信息。

名翰要 | 园豆:202 (菜鸟二级) | 2012-07-27 17:24

你的后两句我倒是都知道 就是第一点"通过文件名在目录中查找对应的i节点" 这个属于第一种解释找对应的索引节点号去找索引节点。。。。

支持(0) 反对(0) as_ | 园豆:197 (初学一级) | 2012-07-28 09:28
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册