发布时间:2026/8/23 18:53:23
Linux 系统 IO 知识点总结 一、文件 IO 基础1. 文件 IO 概念IOI (Input 输入 / 读从文件拿数据)O (Output 输出 / 写把数据存入文件)。文件是存储介质上的数据集合文件 IO 就是操作文件的手段。应用程序运行在用户空间文件存于硬盘等存储介质依靠文件系统管理磁盘文件常见文件系统Windows 的 FAT32、exFATLinux 的 ext2、ext3。2. 三种开发层次层次特点缺点裸奔层无操作系统直接操作硬件寄存器 IO需要懂硬件单任务无并发固件库层调用固件库少量了解硬件依旧单任务不能多程序并发带 OS 操作系统层Linux/Windows业务开发屏蔽硬件细节支持多任务并发对资源要求更高3. Linux 哲学一切皆文件文件分为文件属性和文件内容。inode(i‑node)文件在磁盘上唯一标识保存文件大小、类型、权限、时间等属性文件存在则磁盘 inode 一定存在。二、系统 IO 调用文件内核流程磁盘上每个文件拥有物理 inode保存文件属性磁盘存放真正文件内容。应用调用open()系统调用内核把磁盘物理 inode 加载到内存生成struct inode同时为本次打开的文件创建struct file结构体保存打开文件状态、读写偏移光标。每个进程拥有进程文件表项结构体指针数组open返回数组下标也就是文件描述符 fd整数。后续read/write/lseek/close全部通过文件描述符 fd 操作文件用户空间完全不需要接触 inode、struct file 内核结构体。读写操作会自动移动文件读写光标三、系统 IO 核心 API1. open 打开 / 创建文件头文件fcntl.hint open(const char *pathname, int flags); int open(const char *pathname, int flags,mode_t mode);• pathname文件路径名字符串。• flags打开标志三选一必选O_RDONLY只读、O_WRONLY只写、O_RDWR读写可选标志用|按位或组合O_APPEND追加光标置于文件末尾O_CREAT文件不存在就创建使用该标志必须传第三个 mode 参数O_EXCL搭配O_CREAT文件已存在则 open 报错O_TRUNC打开时清空原有文件内容O_NONBLOCK非阻塞打开普通文件默认非阻塞设备 / 管道默认阻塞• mode:当第二个参数指定了O_CREAT(创建标志)那么必须有第三个参数指定创建文件的权限(mode) 有两种方式1)User:S_IRUSR S_IWUSR S_IXUSRS_IRWXUGroup:S_IRGRP S_IWGRP S_IXGRPS_IRWXGOther:S_IROTH S_IWOTH S_IXOTHS_IRWXO2)八进制形式06640:表示 后面的数为八进制数 一个八进制数需要三个二进制6:110指定user用户拥有读写权限6:110指定group用户拥有读写权限4:100指定other用户拥有可读权限• 返回成功返回大于 0 的文件描述符 fd失败返回‑1设置全局错误码errno可用perror()打印错误。• 辅助函数creat()等价于带O_CREAT的 open。2. read 读文件头文件unistd.hssize_t read(int fd, void *buf, size_t count);• fd文件描述符buf内存缓冲区存放读到的数据count期望读取字节数。• 返回成功返回实际读到字节数0读到文件末尾 EOF失败返回‑1。3. write 写文件头文件unistd.hssize_t write(int fd, const void *buf, size_t count);• fd文件描述符buf待写入数据缓冲区count希望写入字节数。• 返回成功返回实际写入字节数0 代表无写入失败返回‑1。4. lseek 修改文件读写偏移光标头文件unistd.hoff_t lseek(int fd, off_t offset, int whence);• offset 偏移量正数向后偏移负数向前0 不动。•whence 基准位置SEEK_SET以文件开头为基准SEEK_CUR以当前光标位置为基准SEEK_END以文件末尾为基准• 返回成功返回光标距离文件开头总字节失败‑1。5. close 关闭文件头文件unistd.hint close(int fd);传入文件描述符释放内核资源成功返回 0失败‑1。四、实操练习思路文件拷贝open 源文件只读打开得到 fd1open 目标文件只写、不存在创建、存在截断清空设置权限得到 fd2循环 read 读 fd1 到缓冲区读到 0 就结束循环把读到的数据 write 写入 fd2操作完成调用 close 关闭两个文件描述符。补充注意点read、write 会自动移动文件光标创建文件时八进制权限数字开头必须写 0系统调用出错用 perror 打印错误信息文件描述符只是进程内数组下标内核真正维护struct file和struct inode。

相关新闻

2026/8/23 18:48:22

混合检索(向量+关键词)详解

混合检索(Hybrid Retrieval)是一种在信息检索系统中,将向量检索(基于语义)与关键词检索(基于字面匹配)相结合的搜索策略。它的核心目标是结合两种方法的优势,取长补短,从…

2026/8/23 18:48:22

语法感知模糊测试:FieldsFuzz 如何实现高效结构化输入变异

“ 在现代软件系统中,大量程序依赖结构化输入(如 JSON、XML、协议报文等)。然而,传统模糊测试往往采用字节级随机变异,难以生成语法合法且语义有效的输入,从而导致:大量无效测试样本被丢弃&…

2026/8/23 18:48:22

Google AI Studio Build 集成 GitHub 仓库:一键导入与云端 AI 开发实践

这次我们来看一个对开发者非常实用的功能更新:Google AI Studio Build 现在支持直接导入 GitHub 仓库。这意味着,你可以将 GitHub 上的开源项目、代码库或工作流,无缝地导入到 Google 的 AI 开发环境中,进行快速的模型测试、代码调…

2026/8/23 20:08:31

智能Agent如何重塑招聘自动化流程

1. 招聘自动化的发展现状与挑战2026年的招聘市场正经历着前所未有的数字化转型。根据LinkedIn最新发布的《全球招聘趋势报告》,超过78%的企业正在使用某种形式的AI招聘工具,但其中仅有23%实现了真正端到端的流程自动化。这种现状背后反映出一个核心矛盾&…

2026/8/23 20:08:31

LeetCode 771宝石与石头:从集合查找看哈希表与算法优化

1. 项目概述:从一道题看编程思维的构建最近在带新人刷题,发现很多人对LeetCode 771这道“宝石与石头”的题有种复杂的情绪。一方面觉得它太简单,看一眼就知道用集合(Set)或者哈希表(Hash Table)…

2026/8/23 20:08:31

上海计算机学会|2026年2月月赛|T2奇怪的展开式|顺序输出解法

题目链接 更好的阅读体验? 前提须知: 变量名称: t 几进制数 n 数串 h 数串n的长度 e 次方数 首先先进行输入 然后获取长度(肯定是必要的这样才能知道后面要循环几次) 创建变量e用来统计次幂是多少 每一次会-1 下…

2026/8/23 20:03:30

手写VIO:从IMU运动学与视觉几何基础入门视觉惯性里程计

1. 项目缘起:为什么从“手写VIO”开始?如果你正在接触机器人、无人机或者自动驾驶,那么“VIO”这个词大概率已经在你眼前晃过无数次了。VIO,视觉惯性里程计,简单说就是让机器同时用“眼睛”(相机&#xff0…

2026/8/23 0:02:04

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/23 0:02:04

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/23 0:02:04

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/23 0:02:04

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/23 0:02:04

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/23 0:02:04

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/23 13:29:45

实测才敢推 AI论文网站 2026最新测评与推荐

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。一、综…

2026/8/23 6:14:43

2026必备!AI论文网站测评:最新推荐与深度对比

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

2026/8/23 4:22:01

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…