自学嵌入式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
相关推荐
夏鹏今天学习了吗1 天前
【LeetCode热题100(87/100)】最小路径和
算法·leetcode·职场和发展
哈哈不让取名字1 天前
基于C++的爬虫框架
开发语言·c++·算法
物理与数学1 天前
linux 内存分布
linux·linux内核
东城绝神1 天前
《Linux运维总结:基于ARM64+X86_64架构使用docker-compose一键离线部署MySQL8.0.43 NDB Cluster容器版集群》
linux·运维·mysql·架构·高可用·ndb cluster
creator_Li1 天前
即时通讯项目--(1)环境搭建
linux·运维·ubuntu
Lips6111 天前
2026.1.20力扣刷题笔记
笔记·算法·leetcode
2501_941329721 天前
YOLOv8-LADH马匹检测识别算法详解与实现
算法·yolo·目标跟踪
洛生&1 天前
Planets Queries II(倍增,基环内向森林)
算法
Mr'liu1 天前
MongoDB 7.0 副本集高可用部署
linux·mongodb
小郭团队1 天前
1_6_五段式SVPWM (传统算法反正切+DPWM2)算法理论与 MATLAB 实现详解
嵌入式硬件·算法·matlab·dsp开发