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。

相关新闻

Edge浏览器深度清理优化指南:从界面净化到进程管控

Edge浏览器深度清理优化指南:从界面净化到进程管控

1. 项目概述:为什么我们需要一个“干净”的Edge?Edge浏览器,作为Windows系统的“原住民”,凭借其与系统的深度集成和日益提升的性能,已经成为了许多用户的主力选择。但用久了你会发现,它似乎变得越来越“臃…

2026/8/24 21:04:42 阅读更多 →
dev-sidecar

dev-sidecar

1. 安装2. 安装证书

2026/8/24 21:03:22 阅读更多 →
基于LoRA高效微调Whisper,实现方言语音识别精准化

基于LoRA高效微调Whisper,实现方言语音识别精准化

1. 方言识别为什么需要微调,以及Whisper的默认能力边界如果你手头有大量方言语音数据,想让AI模型准确识别,直接使用开箱即用的Whisper模型大概率会失望。Whisper在通用普通话和主流英语上表现惊艳,但对于潮州话、闽南语、粤语等方…

2026/8/24 21:04:19 阅读更多 →

最新新闻

无人机 输电线输电塔缺陷检测数据集YOLO11训练输电塔缺陷检测,输电线巡检,螺栓缺失,部件松动,电力杆塔缺陷,无人机电力巡检,电力设施运维,杆塔部件缺损,YOLO电力数据集,电力目标检测

无人机 输电线输电塔缺陷检测数据集YOLO11训练输电塔缺陷检测,输电线巡检,螺栓缺失,部件松动,电力杆塔缺陷,无人机电力巡检,电力设施运维,杆塔部件缺损,YOLO电力数据集,电力目标检测

智慧电力巡检-输电线输电塔缺陷检测数据集 2068张,提供yolo,voc,coco三种标注方式 图像尺寸:640*640 类别数量:10类 训练集图像数量:1875; 验证集图像数量:137; 测试集图像数量:56 类别名称: 每一类图像数 ,每一类标注…

2026/8/24 22:02:39 阅读更多 →
书画装裱怎么选不踩坑?三招识别靠谱手工装裱机构(附北京香馨阁案例)

书画装裱怎么选不踩坑?三招识别靠谱手工装裱机构(附北京香馨阁案例)

【摘要】书画装裱看似简单,实则工艺差异巨大。选错装裱方式,轻则影响观赏效果,重则损伤画心。本文结合北京海淀书画装裱市场现状,从可逆工艺、材料配置、服务流程三个维度,给出三招识别靠谱装裱机构的方法,…

2026/8/24 22:02:39 阅读更多 →
魔兽世界出现api‑ms‑win‑core‑libraryloader‑l1‑2‑0.dll 缺失无法启动|完整修复教程

魔兽世界出现api‑ms‑win‑core‑libraryloader‑l1‑2‑0.dll 缺失无法启动|完整修复教程

一、报错是什么原因 api‑ms‑win‑core‑libraryloader‑l1‑2‑0.dll 属于 Windows ApiSet 转发组件,负责程序加载库文件。 ✅常见诱因: Win7/Win8.1 缺少微软 UCRT 补丁 KB2999226(最高发) Visual C 2015‑2022 运行库损坏、缺…

2026/8/24 22:02:39 阅读更多 →
国内使用 CodeX 操作手册(2026 年最新版)

国内使用 CodeX 操作手册(2026 年最新版)

CodeX 是 OpenAI 推出的 AI 编程助手,支持 CLI(命令行)、IDE 插件和云端三种使用方式,集代码生成、解释、调试、重构于一体。随着 GPT-5-Codex 模型的发布,其编程能力大幅提升,已成为国内开发者的重要工具。…

2026/8/24 22:02:39 阅读更多 →
green hills中未被使用的函数如何防止被优化

green hills中未被使用的函数如何防止被优化

目的:简要介绍GHS中未被使用的函数如何防止被优化,本文以ARM版为例作说明,RISCV方式相同。背景:使用GHS编译时一般会启用 -delete 链接选项,启用后编译器会移除未被使用的函数,说明如下:这里通过…

2026/8/24 22:02:39 阅读更多 →
ESP32-S3向量指令加速:工业振动信号FFT分析与边缘异常检测

ESP32-S3向量指令加速:工业振动信号FFT分析与边缘异常检测

ESP32-S3向量指令加速:工业振动信号FFT分析与边缘异常检测 工业设备的状态监测里,振动信号分析是最靠谱的预警手段之一。轴承磨损、齿轮断齿、转子不平衡,这些故障在变成 catastrophic failure 之前,振动频谱上早就有迹可循。传统…

2026/8/24 22:01:38 阅读更多 →

日新闻

前端内容安全与依赖审计实践

前端内容安全与依赖审计实践

前端内容安全与依赖审计实践 前端安全依赖分层防护。没有任何单一配置能替代输出编码、权限校验和依赖更新。 把不可信内容当作数据 默认使用框架的转义能力;确需渲染 HTML 时,先在服务端或可信的客户端库中进行白名单过滤。避免把用户输入直接赋给 inne…

2026/8/24 1:08:15 阅读更多 →
Windows登录密码存储机制全解析:从哈希算法到安全加固实战

Windows登录密码存储机制全解析:从哈希算法到安全加固实战

1. 项目概述:Windows登录密码的“黑匣子”每次你按下CtrlAltDel,输入密码,然后看到那个熟悉的桌面,这背后发生了一系列复杂而精密的操作。作为一名长期与Windows系统打交道的从业者,我经常被问到:“我的密码…

2026/8/24 1:08:15 阅读更多 →
AI面试系统安全挑战与解决方案

AI面试系统安全挑战与解决方案

1. 项目概述:AI面试系统的安全挑战去年参与某跨国企业AI面试系统部署时,遇到一个典型案例:候选人在视频面试中无意提到竞争对手产品名称,系统竟自动将该信息关联到企业知识库并生成竞品分析报告。这个看似"智能"的功能&…

2026/8/24 1:08:15 阅读更多 →

周新闻

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

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

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

2026/8/24 0:06:02 阅读更多 →
SIP通话转接原理与REFER方法实战解析

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

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

2026/8/24 0:20:20 阅读更多 →
Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

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

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

2026/8/24 0:14:11 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/24 20:22:44 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/23 12:10:44 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/24 11:20:22 阅读更多 →