侧边栏壁纸
博主头像
colo

欲买桂花同载酒

  • 累计撰写 1823 篇文章
  • 累计收到 0 条评论

解释文件系统的基本操作:创建、读取、写入和删除文件

2025-12-12 / 0 评论 / 5 阅读

题目

解释文件系统的基本操作:创建、读取、写入和删除文件

信息

  • 类型:问答
  • 难度:⭐

考点

文件系统基本概念,文件操作API,文件路径处理

快速回答

文件系统核心操作包括:

  • 创建文件:使用类似 open() 的 API 并指定创建标志
  • 读取文件:通过 read() 函数获取文件内容
  • 写入文件:使用 write() 函数修改内容
  • 删除文件:调用 unlink()remove() 删除文件

操作时需注意:文件路径处理、错误检查、资源释放。

解析

1. 核心操作原理

文件系统通过系统调用提供基础操作:

  • 创建文件:内核分配 inode 和磁盘空间,目录添加新条目
  • 读取/写入:通过文件描述符定位数据块,缓冲机制加速访问
  • 删除文件:减少链接计数,空间标记为可重用(实际数据未立即擦除)

2. 代码示例(POSIX 标准)

// 创建文件(O_CREAT | O_WRONLY 标志)
int fd = open("/path/to/file.txt", O_CREAT | O_WRONLY, 0644);

// 写入数据
char data[] = "Hello OS";
write(fd, data, sizeof(data));

// 重新打开读取(O_RDONLY 标志)
fd = open("/path/to/file.txt", O_RDONLY);
char buffer[50];
read(fd, buffer, sizeof(buffer));

// 删除文件
unlink("/path/to/file.txt");
close(fd); // 必须关闭文件描述符!

3. 最佳实践

  • 错误处理:检查所有系统调用的返回值(如 open() 返回 -1 表示失败)
  • 资源释放:操作后必须调用 close() 避免文件描述符泄漏
  • 路径安全:避免使用相对路径(如 ../),防止目录遍历攻击
  • 权限控制:创建文件时设置合适权限(如 0644 表示用户可读写,其他只读)

4. 常见错误

  • 未检查返回值导致静默失败
  • 忘记关闭文件描述符(资源泄漏)
  • 并发访问冲突(多进程同时写同一文件)
  • 误删文件(unlink() 后数据不可恢复)
  • 路径拼写错误(如缺少斜杠 /path/to vs /path/to/

5. 扩展知识

  • 文件描述符:内核维护的打开文件引用,每个进程独立
  • inode:存储文件元数据(大小、权限、位置等)
  • 硬链接 vs 软链接:硬链接直接指向 inode,软链接是独立路径文件
  • 原子操作O_EXCL 标志确保文件创建的唯一性