自学嵌入式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
相关推荐
leobertlan6 小时前
痛苦系列 | DSP-03 跨越单位圆:Z变换与零极点分析
算法·程序员
蛋蛋的就会顺顺的6 小时前
hot100 p0——栈,贪心算法,动态规划
java·前端·javascript·算法·leetcode·力扣
贵州诚鑫致达科技有限公司6 小时前
Linux的yum源怎么重启?源不是服务
linux·运维·服务器
开发小能手1237 小时前
答案daanC语言
数据结构·算法
Navigator_Z9 小时前
LeetCode //C - 1291. Sequential Digits
c语言·算法·leetcode
澜山奕秋10 小时前
RHCSA
linux·运维·服务器
pride.li10 小时前
第03章 Python 教程-基础语法:注释与变量
服务器·前端·后端·python·算法·计算机视觉
Web极客码10 小时前
告别流式截断:我用客户端中间件解决长文本 API 跨国 SSE 断连与数据自愈
linux·agent 图
旺仔仔仔11 小时前
机器人项目实战(5):从单次抓取,到接收指令连续做事
算法
cnnews11 小时前
Chromebox3安装Ubuntu后内存化与最小化 eMMC 写入优化
linux·运维·ubuntu