文件描述符

linux下一切皆文件
对系统的操作都是在对文件操作
而文件就是一堆数据
由冯诺依曼体系结构我们知道 cpu只能和内存进行数据交互 但内存大小对一大堆文件来说都是偏小的
所以文件一般都存放在硬盘中
当文件需要使用时就拿到内存中 但有的文件几个g大小也还是太大了
文件由什么组成呢 文件由 数据+属性组成
根据os的习惯 对于所有任务都是先描述后组织 所以肯定会为文件创建结构体
os 服务上层又隔离上层 我们都不能直接对os内存操作 我们只能使用os为我们封装的函数接口
先用C语言打开一个文件
首先我们要用到函数fopen(打开文件)fclose(关闭文件)fseek(设置文件读取位置)f(读取文件数据)fwrite(向文件写入数数据)
在这里插入图片描述在这里插入图片描述

首先我们使用fopen打开了文件 这里需要文件名 和打开方式(w+ 可读可写 初始清空或创建文件)然后它返回了一个FILE*类型的数据 其中这个FILE就是C库对文件定义的一个结构体
而其中肯定调用了系统的打开文件函数
而系统中描述文件的这个结构体就叫 struct file 这个结构体就包含了文件的属性和一部分数据(结构体中有一个缓冲区 这个缓冲区用于文件信息的读和写入)
当我们创建进程后 就会在内存创建对应的pcb结构 而这个结构中有一个指针指向一个专门对应文件的结构体 这个结构体里就有一个数组 存放了 这个进程打开的所以文件的标识符
其中进程创建就会先打开三个文件流
stdin(标准输入流 对应键盘)
stdout(标准输出流 对应屏幕)
stderr (标准错误流 也是对应打印到屏幕的)
它们就占用了数组的0 1 2三个标识 而数组的每个元素就存放了文件打开后再内存中创建的结构体
在这里插入图片描述
这就是系统打开文件的函数open 它返回了一个int类型 就是数组的下标 而FILE结构体中就保存了这个下标 用于找到文件
当你打开新的文件 就找一个最小的没被使用的下标放入这个文件的结构体的地址

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值