linux支持在不同进程之间共享打开的文件,linux内核使用三种数据结构表示打开的文件,他们之间的关系决定了在文件共享方面一个进程对另一个进程可能产生的影响。

(1)每个进程在进程描述符中都有一个记录项,记录项中包有一张打开文件描述符表,每个文件描述符占用一项,与每个文件描述符相关联的是(即每个表项的大致内容):

  (a)文件描述符标志,即一个整型数;

  (b)指向文件表项的指针。

(2)内核为所有打开文件维持一张文件表。每个文件表项包含:

  (a)文件状态标志(读、写、添写、同步等);

   (b)当前文件偏移量;

        (c)通用i节点表项的指针(创建通用i节点结构的目的是对在一个计算机系统上的多文件系统类型提供支持,因为不同的文件系统有不同的i节点类型,也即系统提供了虚拟文件系统来支持多文件系统的情况,在unix系统上,是通过v节点,而非通用i节点来支持)

(3)每个打开文件(或设备)都有一个通用i节点结构。i节点结构里面是肯定包含了该文件的i节点信息(此处的i节点是一个依赖于文件系统的i节点),在unix中,与通用i节点想对应的v节点结构里面还包含的文件的类型信息,还有对此文件进行各种操作的函数的指针。

posted on 2011-09-07 11:13  hms  阅读(2415)  评论(0)    收藏  举报