APUE学习笔记(4)-文件共享
写在前面 1. 本文内容对应《 UNIX 环境高级编程》 ( 第 2 版 ) 》第 3 章。 2. 主要总结了 UNIX 系统下描述文件的三种数据结构,以及文件共享的相关概念。 3. 希望本文对您有所帮助,也欢迎您给我提意见和建议。 文件数据结构 表示文件的数据结构有三个: l v 节点结构 ,包含 a) 文件类型 b) 对此文件进行各种操作的函数的指针 c) 文件的 i 节点(索引节点)。 i 节点包含文件的所有者,文件长度,文件所在的设备,指向文件实际数据块在磁盘上所在位置的指针等等。 Linux 没有使用 v 节点,而是使用了通用 i 节点结构。 l 文件表项 ,内核为所有打开文件维持一张文件表,每个文件表项包含 a) 文件状态标志(读,写,添加,同步和非阻塞等) b) 当前文件偏移量 c) 指向该文件 v 节点表项的指针。 l 文件描述符 ,每个进程在进程表中都有一个记录项,记录项中包含一张打开文件描述符表,可将其视为一个矢量,每个描述符占用一项。与每个文件描述符相关联的是 a) 文件描述符标志( FD_CLOEXEC ,表示文件描述符在通过一个 exec 时仍保持有效) b) 指向一个文件表项的指针。 文件共享 l 共享 v 节点。对于打开同一个文件的所有进程,它们共享该文件的 v 节点结构,但是可以拥有各自的文件表项,即不同的文件状态标志和当前偏移量。 l 共享文件表项