Linux 文件与目录操作(文件 IO)
在 Linux 系统编程中,文件和目录是你最常接触的资源之一。你需要打开文件、读取内容、写入日志、创建目录、删除文件……所有这些操作,都可以通过 Linux 提供的一组系统调用来实现。
本节将带你掌握 文件描述符 和一组核心系统调用,包括 open()
、read()
、write()
、close()
、lseek()
等,帮你打好文件 IO 的基础。同时,你还会学习如何创建、删除目录,以及获取文件的元信息。
文件描述符
在 Linux 中,每当你打开一个文件,系统就会返回一个整数,这就是文件描述符(file descriptor,通常简写为 fd)。它是一个用于标识打开文件的句柄,后续的读写操作都需要用这个描述符来指定目标文件。简单来说,文件描述符就是你和文件之间的桥梁。
默认情况下,Linux 会自动为每个进程打开三个文件描述符:
文件描述符 | 名称 | 说明 |
---|---|---|
0 | 标准输入 (stdin ) | 通常是键盘输入 |
1 | 标准输出 (stdout ) | 通常是终端输出 |
2 | 标准错误 (stderr ) | 用于错误输出 |
当你使用 open()
打开一个文件时,系统会返回一个新的文件描述符,例如 3、4、5 等。
打开和关闭文件
使用 open()
打开文件
头文件:
#include <fcntl.h>
#include <unistd.h>
函数原型:
int open(const char *pathname, int flags, mode_t mode);
常用参数:
pathname
:文件路径;flags
:打开方式,如只读O_RDONLY
,只写O_WRONLY
,读写O_RDWR
;mode
:当创建新文件时指定权限(通常配合O_CREAT
使用)。
示例代码:
int fd = open("test.txt", O_WRONLY | O_CREAT, 0644);
if (fd == -1) {
perror("open");
}
使用 close()
关闭文件
释放文件资源:
close(fd);