APUE-第3章总结
文章目录
文件I/O(系统调用API)
文件描述符
概念
文件描述符是一个非负整数,对于内核而言所有打开的文件都通过文件描述符引用。
在Unix系统shell进程中:
fd:0 STDIN_FILENO 与标准输入相关联
fd:1 STDOUT_FILENO 与标准输出相关联
fd:2 STDERR_FILENO 与标准错误相关联
数据结构
每一个打开的文件,内核使用打开文件描述符表,文件表项 以及 v节点表项(Linux中的i节点) 三种数据结构来表示
- 打开文件描述表
每个进程的PCB(进程控制块)中都包含一个该表的指针;
在打开文件描述符表中,每个文件描述符占用该表的一项
每个文件描述表项由 文件描述符标志 和 指向一个文件表项的指针构成
- 文件表
内核为所有打开文件维持一张文件表,每个文件表项包括:
a. 文件状态标志
b. 当前文件偏移量
c. 指向该文件的v节点表现的指针
- v节点
每个打开文件都有一个v节点。
v节点对象由文件类型和对此文件进行各种操作的方法构成