简单理解Linux File的操作
类Unix系统是支持多个进程打开同一个文件,进行读写。
得益于类Unix系统对于文件操作的特殊设计。
分为三个数据结构
进程表项:其中包含进程中打开的文件和设备的文件描述符。还包含该文件描述符对应的文件表。进程表项存在于进程中,每个进程表项在进程内是独立的。
文件表项:存在于内核中。进程中每个打开的文件都包含该文件描述符所对应的文件表项。文件表项中包含该文件的打开方式,当前文件偏移量和vNode指针。
vNode表:存在于内核中,它是Linux系统对于文件的描述。一个文件只会包含一个vNode。vNode中还关联iNode相关信息。
简单说,类Unix系统将对文件操作中需要用到的信息进行分层处理。vNode中包含文件的基本信息,所有打开的文件通过他都能得到一致的数据。将每个进程打开的文件中不一致的信息保存在文件表项中。而进程表项中只是保存简单的文件描述符和文件描述符对应的文件表项地址。
这样设计的目的还是为了支持多进程同时操作文件。
参考: