Linux——解析文件描述符“int fd”真正含义

作者:小 琛
欢迎转载,请标明出处

引言

在Linux 的学习过程中,不可或缺的就是对于文件操作的学习,我们通常也称之为IO模块。而其中的多个函数的参数都有一个“int fd”。
例如:

在这里插入图片描述

解析文件描述符的真正含义

在这里插入图片描述
看上图,其中,当创建一个进程之后,随之有了它的PCB(进程控制块),它存放各种信息。

  • 其中就有一个 struct files_struct* files的指针,该指针指向一个结构体
  • 这个结构体内部有一个指针数组 fd_array,该数组内存放的指针分别指向各个对应的模块,每个模块就是一个file,该file的信息,创建日期,权限等均在此。
  • 当拿到这个file的这些信息后,就可以从磁盘的相应位置调出该文件

因此,再回到“int fd”这个问题,这里的fd其实就是file_struct结构体内那个存放指针数组的下标!!! 通过下标就可以控制拿到的文件

而我们在一个进程中,如果使用一个代码测试,我们可创建的文件其实是有上限的,值为1021。而fd_array数组大小为1024,也就是说,系统会自动生成三个内容:标准输入、标准输出、错误输出。

  • 8
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值