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

嵌入式第三十三篇——linux系统编程——文件IO

一、文件IO与标准IO的核心区分

文件IO和标准IO在文件操作方式上存在显著差异,主要体现在设计目标、底层实现和使用场景上:

核心标识
文件IO使用文件描述符(int类型,如0/1/2对应标准输入/输出/错误),标准IO使用文件流指针(FILE*类型)。

缓存机制
文件IO直接与内核交互,无缓存;标准IO在用户态提供缓存,减少系统调用次数。

底层实现
文件IO基于操作系统内核的系统调用(如open/read/write),标准IO封装文件IO的C库函数(如fopen/fread/fwrite)。

跨平台性
文件IO依赖操作系统(如Linux与Windows API不兼容),标准IO遵循C标准(如ANSI C),具有跨平台性。

适用场景
文件IO适用于设备文件(如串口、网卡)或实时性要求高的场景;标准IO适合普通磁盘文件操作,注重代码可移植性。

二、文件IO的核心操作(Linux系统)

打开文件:open函数
函数原型:

int open(const char *pathname, int flags, mode_t mode);
  • pathname:文件路径(如"./test.txt")。
  • flags:打开模式(必选如O_RDONLY,可选如O_CREAT)。
  • mode:文件权限(如0644,八进制格式)。

读取文件:read函数
函数原型:

ssize_t read(int fd, void *buf, size_t count);
  • fd:文件描述符。
  • buf:数据缓冲区。
  • count:期望读取的最大字节数。

写入文件:write函数
函数原型:

ssize_t write(int fd, const void *buf, size_t count);
  • fd:文件描述符。
  • buf:待写入数据缓冲区。
  • count:待写入数据字节数。

关闭文件:close函数
函数原型:

int close(int fd);
  • 必须显式调用以避免文件描述符泄漏。

三、目录操作扩展

打开目录:opendir函数
函数原型:

DIR *opendir(const char *name);
  • 返回目录流指针DIR*

读取目录:readdir函数
函数原型:

struct dirent *readdir(DIR *dirp);
  • 返回struct dirent结构体,包含文件名d_name等信息。

关闭目录:closedir函数
函数原型:

int closedir(DIR *dirp);
  • 释放目录流资源。

四、Makefile工程编译工具

基本规则

目标:依赖文件 <TAB>编译命令
  • 目标:如可执行文件a.out
  • 依赖文件:如.c源文件。
  • 命令:如gcc编译指令。

常用变量

  • $^:所有依赖文件。
  • $@:目标文件。
  • $<:第一个依赖文件。

示例

SRC = main.c func.c APP = a.out FLAG = -g -Wall $(APP): $(SRC) gcc $^ -o $@ $(FLAG) clean: rm -f $(APP)
http://www.cnnetsun.cn/news/54369.html

相关文章:

  • OneMore插件:让OneNote效率提升10倍的神器
  • 终极指南:快速上手轻量级文本转语音引擎eSpeak NG
  • 云顶之弈智能挂机助手:解放双手的自动化游戏神器
  • 图像分割标注转换:从入门到精通的全方位指南
  • 3步精通Draw.io Mermaid插件:小白也能快速上手的文本转图表神器
  • 12.14周报
  • 3分钟掌握Easy-Scraper:零基础网页数据抓取神器
  • 飞书文档批量导出终极指南:告别手动烦恼,实现高效迁移
  • SuperCom串口调试工具:终极免费解决方案与5分钟快速部署指南
  • Vulkan显存检测利器:memtest_vulkan快速验证显卡稳定性
  • 揭秘BlenderGIS:5分钟搞定专业级地形生成的秘密武器
  • 终极Mac桌面歌词神器LyricsX完整使用指南
  • TranslucentTB中文版下载安装保姆级教程(附安装包,非常详细)
  • 3分钟轻松退出Windows Insider计划:OfflineInsiderEnroll离线工具完全指南
  • 为什么需要多智能体?
  • openMES制造执行系统:5步快速部署完整指南
  • 万元级旗舰值不值?三星三折叠价格和功能深度拆解
  • 专科生必看!告别熬夜赶论文!paperxie1小时搞定毕业设计初稿,导师直呼“专业”
  • 无损剪辑新纪元:LosslessCut重塑视频处理体验
  • 对等保2.0的理解
  • 深蓝词库转换终极指南:5分钟搞定跨平台词库同步
  • BibTeX国标引用终极指南:自动化排版让学术写作更轻松
  • Lumafly模组管理器实战指南:告别空洞骑士模组烦恼
  • 终极指南:如何用gbt7714-bibtex-style轻松搞定国标参考文献排版
  • 5分钟解决E-Hentai下载难题:这款工具让图片收藏变得如此简单
  • 函数指针与指针函数
  • 终极指南:如何用文本转图表工具实现高效创作
  • 阴阳师自动化脚本终极指南:3步实现游戏全自动操作
  • TS-Loader 源码解析与自定义 Webpack Loader 开发指南
  • 【MySQL XA规范】