网站首页 > 资源文章 正文
在前面几个小节分析了do_sys_open相关的几个接口,但这样没头没脑的分析,不利于我们
了解do_sys_open接口,因此本小节主要先总体说明do_sys_open实现的功能,然后再对每一个小模块进行介绍(本次代码分析基于linux3.10)。
do_sys_open实现功能的说明:
1.首先调用get_unused_fd_flags,在该进程空间中,获取一个尚未使用的fd,若获取成功,则继续向下执行,并确认是否需要扩展task->files->fdt的内存;若当前进程已打开的文件数超过限制,则返回失败。
2.若成功获取一个尚未使用的fd,则调用do_filp_open进行后续的操作,而do_filp_open则直接调用path_openat进行后续操作
3.在path_openat中,主要包含如下几部分:
a.调用get_empty_filp接口,申请一个文件描述符指针
b.进行路径查找时需要借助结构体struct nameidata类型的变量存储查找过程相关的dentry变量、路径名、inode节点等信息,因此需要调用path_init接口用于初始化struct nameidata类型的变量,并设置路径查找的类型(根路径查找、当前路径查找等)
C.调用link_path_walk接口,进行路径的查找,执行完该接口后,若查找成功,其返回打开文件的父目录的dentry、inode等变量值
d.当查找路径成功后,则调用do_last进行文件的打开,若打开的文件为一个链接文件则do_last直接返回,由path_openat中的接下来的函数调用follow_link接口,对链接文件对应的target文件路径进行查找,并返回查找文件的父目录对应的dentry、inode,接着调用do_last进行文件的打开操作。
4.若第三步完成了文件的打开操作,则将该打开文件对应的文件描述符与fd进行关联,即
task->files->fdt[fd]=filep。
以上4步即为文件打开所需要执行的主要内容,通过这些操作,完成了文件描述符与dentry、inode、filesystem、进程描述符等变量的关联,即将文件与进程关联起来。接下来详细分析
猜你喜欢
- 2024-10-30 腾讯面试:linux内存性能优化总结(linux内核性能优化)
- 2024-10-30 CentOS系统下PXE服务器的搭建与部署
- 2024-10-30 Linux系统中的Oracle数据备份(三)——重置sys和system密码
- 2024-10-30 Linux入门的一些基本知识整理,赶紧收藏起来
- 2024-10-30 Linux高性能服务器设计(高性能linux服务器运维实战pdf)
- 2024-10-30 浅析进程间通信的几种方式(含实例源码)
- 2024-10-30 Linux在实际中的应用(linux在工作中的应用)
- 2024-10-30 如何在 U 盘上安装多个操作系统(u盘怎么制作多系统安装盘)
- 2024-10-30 【Linux】推荐一款功能强大的系统诊断和监控工具sysdig
- 2024-10-30 如何通过网络启动安装操作系统(逐步操作)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- 电脑显示器花屏 (79)
- 403 forbidden (65)
- linux怎么查看系统版本 (54)
- 补码运算 (63)
- 缓存服务器 (61)
- 定时重启 (59)
- plsql developer (73)
- 对话框打开时命令无法执行 (61)
- excel数据透视表 (72)
- oracle认证 (56)
- 网页不能复制 (84)
- photoshop外挂滤镜 (58)
- 网页无法复制粘贴 (55)
- vmware workstation 7 1 3 (78)
- jdk 64位下载 (65)
- phpstudy 2013 (66)
- 卡通形象生成 (55)
- psd模板免费下载 (67)
- shift (58)
- localhost打不开 (58)
- 检测代理服务器设置 (55)
- frequency (66)
- indesign教程 (55)
- 运行命令大全 (61)
- ping exe (64)
本文暂时没有评论,来添加一个吧(●'◡'●)