APUE-第3章总结

文件I/O(系统调用API)


文件描述符

概念

文件描述符是一个非负整数,对于内核而言所有打开的文件都通过文件描述符引用。

在Unix系统shell进程中:

fd:0 STDIN_FILENO 与标准输入相关联

fd:1 STDOUT_FILENO 与标准输出相关联

fd:2 STDERR_FILENO 与标准错误相关联

数据结构

每一个打开的文件,内核使用打开文件描述符表文件表项 以及 v节点表项(Linux中的i节点) 三种数据结构来表示

APUE-第3章总结

  • 打开文件描述表

每个进程的PCB(进程控制块)中都包含一个该表的指针;

在打开文件描述符表中,每个文件描述符占用该表的一项

每个文件描述表项由 文件描述符标志 和 指向一个文件表项的指针构成

  • 文件表

内核为所有打开文件维持一张文件表,每个文件表项包括:

a. 文件状态标志

b. 当前文件偏移量

c. 指向该文件的v节点表现的指针

  • v节点

每个打开文件都有一个v节点。

v节点对象由文件类型和对此文件进行各种操作的方法构成