自学嵌入式day28,文件操作

文件操作函数详解

open函数

复制代码
int open(const char *pathname, int flags, mode_t mode);
  • 参数说明:
    • pathname:文件路径字符串
    • flags:文件打开标志组合
      • 基本模式:O_RDONLY/O_WRONLY/O_RDWR
      • 创建选项:O_CREAT(需配合mode参数)
      • 修改选项:O_TRUNC/O_APPEND
    • mode(创建文件时生效):权限位掩码,如0644
  • 返回值:成功返回文件描述符(≥3),失败返回-1

fopen与open模式对照

fopen模式 open标志组合
"r" O_RDONLY
"w" O_WRONLY|O_CREAT|O_TRUNC
"a" O_WRONLY|O_CREAT|O_APPEND
"r+" O_RDWR
"w+" O_RDWR|O_CREAT|O_TRUNC
"a+" O_RDWR|O_CREAT|O_APPEND

read/write函数

复制代码
ssize_t read(int fd, void *buf, size_t count);
ssize_t write(int fd, const void *buf, size_t count);
  • 公共参数:
    • fd:open返回的文件描述符
    • buf:数据缓冲区指针
    • count:操作字节数
  • 返回值:
    • 成功:实际读写字节数(可能小于count)
    • 0:read到达文件尾/write未写入数据
    • -1:出错(检查errno)

close函数

复制代码
int close(int fd);
  • 必须调用以释放系统资源
  • 返回值:0成功/-1失败

目录操作函数

opendir/readdir/closedir流程

复制代码
DIR *opendir(const char *name);
struct dirent *readdir(DIR *dirp);
int closedir(DIR *dirp);
  • dirent结构关键字段:
    • d_name:文件名字符串
    • d_type:文件类型标识符
  • 典型使用模式:
c 复制代码
DIR *dir = opendir("path");
struct dirent *entry;
while ((entry = readdir(dir)) != NULL) {
    printf("%s\n", entry->d_name);
}
closedir(dir);

Makefile编写规范

基础语法结构

复制代码
target: dependencies
[TAB]command
  • 特殊变量:
    • $@:当前目标名
    • $^:所有依赖文件
    • $<:第一个依赖文件

进阶示例

makefile 复制代码
CC = gcc
CFLAGS = -Wall -g
TARGET = program
SRCS = main.c utils.c

$(TARGET): $(SRCS)
	$(CC) $(CFLAGS) $^ -o $@

clean:
	rm -f $(TARGET)

常用命令

  • 默认编译:make
  • 指定目标:make target_name
  • 清理构建:make clean
  • 调试模式:make --debug
相关推荐
小鹏linux9 小时前
Ubuntu 22.04 部署开源免费具有精美现代web页面的Casdoor账号管理系统
linux·前端·ubuntu·开源·堡垒机
在角落发呆10 小时前
Linux转发配置:解锁网络互联的核心密码
linux·运维·网络
心中有国也有家10 小时前
cann-recipes-infer:昇腾 NPU 推理的“菜谱集合”
经验分享·笔记·学习·算法
齐潇宇10 小时前
Zabbix 7 概述与配置
linux·zabbix·监控告警
绝知此事10 小时前
【算法突围 01】线性结构与哈希表:后端开发的收纳术
java·数据结构·算法·面试·jdk·散列表
碧海银沙音频科技研究院10 小时前
通话AEC与语音识别AEC的软硬回采链路
深度学习·算法·语音识别
csdn_aspnet11 小时前
Python 算法快闪 LeetCode 编号 70 - 爬楼梯
python·算法·leetcode·职场和发展
LuminousCPP12 小时前
数据结构 - 线性表第四篇:C 语言通讯录优化升级全记录(踩坑 + 思考)
c语言·开发语言·数据结构·经验分享·笔记·学习
江公望12 小时前
Ubuntu htop命令,10分钟讲清楚
linux·服务器