Linux 文件描述符

//

1、UNIX文件描述符

Unix操作系统或者Linux操作系统的文件描述符使用一个非负整数来表示,但是文件描述符不仅仅是一个非负数,Unix对于文件IO有以下几个数据结构:

A.       每个进程都有一个进程表,其中有个记录表项,这个记录表项指向的是一个打开文件描述符表,这个文件描述符表是一个矢量表,每个文件描述符占用的是一个表项,但是这个表项里面包含两部分内容第一个是文件描述符标志,也就是通常所属的fd,另一个内容是一个指向文件表项的指针;这里指向的是一个文件表项,不是一个文件表。

B.       Unix/Linux内核为所有打开的文件建立了一个文件表由文件表项来构成。其中每个文件表项包含一下几个方面的内容:第一个是文件状态标志,这个标志指明了文件的当前状态,比如说,可读,可写,阻塞等;第二个是当前文件偏移量;第三个是指向文件v节点的指针;从这里也可以看出来为什么在另外的一个终端中打开已经打开的一个文件的时候,显示的并不是文件的开头部分,而是文件的当前偏移位置,但是当另外一个用户登录的时候,显示的是文件的开头部分。

C.       每个打开的文件都有一个V节点结构,Linux没有这个结构。这个v节点包含两个部分:第一个部分是文件操作的函数,第二个部分是文件的i节点;其中i节点包含的是文件的所有者,文件长度,指向文件实际数据块在磁盘上的位置的指针等信息。I节点的这些信息是在从磁盘读入内存的时候从磁盘获取的。

 

使用v节点的目的是为了能够支持多文件系统类型。

//


参考:《Unix 环境高级编程》

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值