当前位置: 首页 > news >正文

文件描述符、文件表、FILE 结构体笔记

一、文件描述符与文件描述符表

  • 文件描述符:进程的“文件描述符表”的索引。

  • 文件描述符表:每个进程在内核中维护一个struct files_struct结构,其中包含一个指针数组(通常叫fd_array或动态分配的fd数组,每个元素是一个struct file *类型的指针,它指向内核中对应的struct file对象),数组的下标就是文件描述符的值。


二、内核层与用户层的两个概念:“文件表” 与FILE结构体

1. 内核层
  • 文件表项(struct file

    • 位于内核空间,属于内核对象

    • 每个打开的文件对应一个struct file对象。

    • 包含:文件偏移、打开模式、指向 inode 的指针、引用计数等。

    • 是内核管理打开文件的内部数据结构。

  • 内核全局的打开文件表—open file table

    • 简称“文件表”,属于内核中的一种表。

    • 所有struct file对象的集合。

    • Linux 内核通过全局链表(如file_list)或哈希表将所有打开的文件对象串联起来,并维护统计信息(如nr_files)。

2. 用户层
  • FILE结构体

    • 位于用户空间(C 标准库)。

    • 封装了文件描述符(指向内核文件表的索引)。

    • 提供:用户态缓冲区、错误/EOF 标志、缓冲模式等。

    • 用于实现带缓冲的 I/O 操作。

    • 每个FILE*指向一个FILE对象。


三.文件描述符表,内核全局文件表——两种不同的“集合”

集合名称管理对象组织形式作用
文件描述符表(每个进程)指向struct file指针数组fd_array[]),按文件描述符(整数)索引让进程通过整数快速找到对应的内核文件对象
文件表(系统唯一,但内核还有很多其他表)所有的struct file对象本身链表file_list)或哈希表遍历所有打开的文件、统计、资源回收、fget
http://www.jsqmd.com/news/984915/

相关文章:

  • 2026年贵州波形护栏厂家采购指南:工程项目如何选到源头低价+快速发货的合规产品 - 精选优质企业推荐官
  • 【MATLAB】基于模型预测控制的车辆圆轨迹跟踪方法研究
  • 伺服电机仿真(6):机械传动系统的建模-单惯量、双惯量与多惯量系统
  • ngx_signal_worker_processes
  • 第二章 ICEF核心知识解读 第三节 ICEF对AI推理能力的系统性增强:机制、效果与深层价值
  • 2026 合肥高端包包优选榜单 包河靠谱交易门店汇总 - 开心测评
  • Vue 布局方案管理实战:拖拽面板位置保存与多方案切换完整指南
  • 计算机毕业设计之基于大数据的食物营养分析可视化平台
  • 深入解析机器人软件开发中的PID控制:聚焦抗积分饱和优化策略
  • 传统企业 AI 落地,不是买工具,而是重构信息流
  • 北京看守所律师事务所:驻所法律服务与常规代理有何本质区别? - 品牌2026
  • 第八阶段:工程化、质量管控与高级拓展(136天),Vue项目监控:接入Sentry实现前端异常上报+错误定位+告警通知
  • 丽水缙云县黄金回收指南:避开陷阱,多拿上千元 - 专业黄金回收
  • Java博客写出你的故事,上头条拿大奖,别让才华睡大觉
  • 把专业知识装进7×24的AI盒子:波街智才市场的设计逻辑
  • 南京婚纱照怎么选?麦田影像教你拍出专属风格 - 速递信息
  • 论文精读:基于GIS与地理探测器的西南喀斯特石漠化空间分布及驱动因子分析
  • 【教学类-160-52】20260531 AI视频培训-练习052“豆包AI视频《海边跳舞少女》豆包图片风格:马蒂斯
  • 细说KISS、YAGNI原则
  • 制造业领域:2026年值得关注的手推式/驾驶式/全自动工业扫地机制造商 - 企业推荐官【官方】
  • 第76篇 | HarmonyOS 保险箱详情页:私密照片如何浏览、恢复和导出
  • 2026义乌UV双喷服务机构整理推荐 - 奔跑123
  • 通诚无忧-通辽信息港信息平台运营策略:打造用户喜爱的通辽市本地服务社区
  • Kotlin单表达式函数在安卓开发中的精简艺术
  • MySQL(三):库操作与表操作
  • 大理黄金回收2026全流程高价避坑攻略 - 润富黄金回收
  • 自流平材料在现代装修设计中的创新应用及魅力解析
  • Playwright视觉比较(图片比对测试)
  • 伺服电机仿真(7):非线性因素的建模
  • 手把手教你用MATLAB复现圆柱绕流POD分解:从Brunton的代码到自己的流场图