自学嵌入式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
相关推荐
贝锐4 小时前
从国产化信创设备到商用安卓终端,向日葵如何帮助企业实现统一运维管理?
linux·运维·远程控制
顶点多余4 小时前
那些在算法中适合巩固的知识点---1
java·前端·算法
Julien20045 小时前
调查和解决 SELinux 问题
linux·运维·服务器·网络·学习方法
AI情绪识别开源5 小时前
检信 ALLEMOTION OS 加密打包可执行程序 — 全面测试报告版本: v1.3功能测试 / 性能测试 /
开发语言·数据结构·人工智能·功能测试
罗西的思考6 小时前
【Agentic RL / 强化学习框架】Molt 设计解读
人工智能·算法·机器学习
hahaha60167 小时前
HLS高层次综合设计技巧--C++类和模板
图像处理·人工智能·算法·计算机视觉
小张同学a.7 小时前
Docker 容器实战 1—— docker 基础与镜像构建
linux·运维·docker·容器
多弗朗皮卡丘7 小时前
算法详解4:买卖股票的最佳时机系列(上)
算法
Best-Wishes9 小时前
BurpSuite Pro教育版在linux系统中配置
linux·运维·服务器·网络安全·burpsuite
wuminyu10 小时前
深入剖析 Panama Off-heap 的性能损耗与开销
java·linux·c语言·jvm·c++