linux是如何找到通过文件名称找到inode

恋喵大鲤鱼
博客专家认证
2016-11-10 05:17:01
linux是如何找到通过文件名称找到文件对应的inode的?请知道的大牛解释,如果有参考资料的出处就更好了!
...全文
3790 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
放心飞吧 2017-01-12
  • 打赏
  • 举报
回复
目录项中有,文件名与inode映射
恋喵大鲤鱼 2016-12-27
  • 打赏
  • 举报
回复
引用 1 楼 yuelengdihai 的回复:
首先,linux中,文件查找不是通过文件名称来查找的。实际上是通过inode节点来实现文件的查找定位的 建立文件系统时,会建立一个索引节点表,里面包含一定数量的索引节点。每当建立一个文件时,就会为他分配一个索引节点号,相当于文件的地址。
但是我是通过文件命长找到该文件的inode节点的,比如ll -i filename
恋喵大鲤鱼 2016-12-27
  • 打赏
  • 举报
回复
引用 5 楼 K346K346 的回复:
[quote=引用 1 楼 yuelengdihai 的回复:] 首先,linux中,文件查找不是通过文件名称来查找的。实际上是通过inode节点来实现文件的查找定位的 建立文件系统时,会建立一个索引节点表,里面包含一定数量的索引节点。每当建立一个文件时,就会为他分配一个索引节点号,相当于文件的地址。
但是我是通过文件命长找到该文件的inode节点的,比如ll -i filename[/quote]我的理解与你相同,具体请大牛参见我的博客:http://blog.csdn.net/k346k346/article/details/50471527,看一下我的理解有没有错误之处。
qq_30095633 2016-12-27
  • 打赏
  • 举报
回复
我是这么理解的,通过目录表,其中的目录项类似(inode,filename),然后通过filename找到对应的inode,然后通过inode找到磁盘上的文件
wangcong02345 2016-11-12
  • 打赏
  • 举报
回复
我只看过linux0.11中minix的文件系统,那就以open("/dev/tty1",O_RDWR,0);为例说一下: a.首先看路径的首字符是不是/,判断是相对路径还是绝对路径,绝对路径是从root的inode开始找 b. 通过读root的inode的数据块(放在super_block中),里面是一堆dir_entry,看有没有跟dev这个name字符串匹配的, 若有则返回dev的inode_nr,即dir_entry中的inode_nr c.有了dev的inode_nr,读取dev的inode d.有了dev的inode就可以读取dev的数据块,因为dev是一个目录,再查找目录里面有没有跟tty1匹配的name字符串, 若有则返回tty1的inode_nr,即dir_entry中的inode_nr f. 有了tty1的inode_nr,就可以读取tty1中的数据,这儿是一个设备文件,只有一个设备号存在i_zone[0]中 更详细的建议直接看《Linux内核完全注释》赵炯写的
uid123 2016-11-11
  • 打赏
  • 举报
回复
受教了,谢谢分析经验。
如风1989 2016-11-10
  • 打赏
  • 举报
回复
顺序反了兄弟
cocoabird 2016-11-10
  • 打赏
  • 举报
回复
首先,linux中,文件查找不是通过文件名称来查找的。实际上是通过inode节点来实现文件的查找定位的 建立文件系统时,会建立一个索引节点表,里面包含一定数量的索引节点。每当建立一个文件时,就会为他分配一个索引节点号,相当于文件的地址。

4,436

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
  • 内核源代码研究区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧