文件描述符

liunx设计思想就是一切皆文件,网络是文件,键盘等外设也是文件,所有的资源统一的接口,开发者可以像写文件那样通过网络传输数据,可以通过/proc/的文件看到进程资源的使用情况。
内核给每个访问的文件分配了文件描述符,它本质是一个非负整数,在打开或者新建文件时返回,以后读写文件都要通过这个文件描述符。

简单归纳:fd只是一个整数,在open时产生。起到一个索引的作用,进程
posix定义了stdin_fileno,stdout_fileno和stderr_fileno三个常量,也就是0,1,2.这三个文件描述符每个进程都有。

文件描述符帮助应用找到这个文件,而文件的打开模式等上下文信息存储在文件对象中,这个对象直接与文件描述符关联。

附注:每个系统对文件描述符的个数都有限制。我们网上看到配置ulimit也是为了调大系统的打开文件个数,因为一般服务器都要同时处理成千上万个请求,记住scoket连接也是文件。

理解具体情况,需要了解有内核维护3个数据结构
1、进程级文件描述符表(file descriptor table)
每一条目录都记录了当文件描述符的相关信息。
2、系统级打开文件表(open file table)
内核对所有打开的文件维护一个系统级别的打开文件描述表(open file description table),简称打开文件表。表中条目称为打开文件描述体(open file description),存储了与一个打开文件相关的全部信息。
3、文件系统i-node表(i-node table)
每个文件系统为存储于其上的所有文件(包括目录)维护一个i-node表。

这里写图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MonkeyKing.sun

对你有帮助的话,可以打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值