首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

《UNIX环境高级编程》札记-文件共享

2013-10-08 
《UNIX环境高级编程》笔记--文件共享1.文件共享内核使用3种数据结构来表示打开的文件,他们的关系如下:每个进

《UNIX环境高级编程》笔记--文件共享
1.文件共享内核使用3种数据结构来表示打开的文件,他们的关系如下:《UNIX环境高级编程》札记-文件共享每个进程都有一张进程表项,记录进程打开的文件:fd标志:close_on_exec,若一个文件描述符在close_on_exec中的对应比特、位被设置,那么在执行execve()时该描述符将被关闭,否则该描述符将始终处于打开状态。文件指针:指向文件表。
文件表:文件状态标志:read,write,append,sync等,即open的flag参数。当前文件偏移量:当执行了write后,当前文件偏移量就增加了相应的长度,如果偏移量超过了文件的长度,则将i节点表中的当前文件长度设置为文件偏移量。当使用O_APPEND打开文件后,首先将文件偏移量设置为i节点表中的当前文件长度。v节点指针:指向v节点表。
v节点表:v节点包含了文件类型和对此文件进行各种操作的函数指针。v节点还包含了该文件的i节点(i-node)。(linux没有使用v节点,只使用了通用i节点结构,这2种实现上有所不同,但是概念上是一样的)
上图表示一个进程打开了2个不同的文件,一个是标准输入,一个是标准输出。下图表示2个不同的进程打开同一个文件。《UNIX环境高级编程》札记-文件共享

2.dup和dup2函数这2个函数是用来复制一个现存的文件描述符,函数的定义如下:




复制一个文件描述符的另一种方法是使用fcntl函数,这个函数会在以后进行介绍。

热点排行