013 Linux一次文件读过程read()

上一篇介博客绍了文件写过程write(),接下来看一下读过程read()。在写过程中,根据打开文件的文件描述符,获取文件对象指针file*,然后调用操作表中的write()函数或write_iter()函数,完成写操作file->ops->write()。读过程与写过程类似,最终调用的是read()或read_iter()函数。

读文件read()
读文件read()
继续阅读“013 Linux一次文件读过程read()”

011 Linux一次文件打开过程open()

前面介绍了文件系统的各种结构体,那么一次打开文件过程,需要和哪些结构体产生联系呢?要解决上面提出的问题,就要先搞清楚,函数是调用流程是怎样的,调用过程中串联了哪些数据结构,说起来也就是回答如下几个疑问:

  1. 打开文件的内核入口在哪里?
  2. 打开文件时,如何知道当前属于哪个文件系统呢?
  3. 如果文件已存在,那又如何获取目录项dentry和索引节点inode呢?
  4. 文件对象file是怎么构造的?
  5. 文件描述符是怎么产生的,又是如何跟file对象关联起来?
open()调用流程
open()调用流程
继续阅读“011 Linux一次文件打开过程open()”