在 Linux 系统中,一切皆文件。本文深入讲解 C++ 结合 Linux 系统完成文件操作的底层接口,包括 open、write、read 及文件描述符(fd)的使用。
1. 前置知识回顾
上一篇文章介绍了语言特性上的文件操作,主要知识点如下:
- Linux 一切皆是文件。
- C 语言提供的标准库接口:
printf、fprintf、fgets、fread、fwrite。 - C 语言提供的打开文件模式:只读、只写、追加等。
本文将持续深入文件操作,重点掌握以下内容:
open函数的参数解析(位图);- 什么是 fd(文件描述符);
- 如何使用
write/read/close; - fd 的分配规则(重定向的基础)。
2. Linux 最底层的文件打开方式:open()
open 函数是 Linux 系统中用于打开或创建文件的系统调用接口(System Call),它比 C 标准库的 fopen 更底层。
所需头文件如下:
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
函数原型如下:
对于已经创建好的文件:
int open(const char *pathname, int flags);
创建新文件(需要指定权限):
int open(const char *pathname, int flags, mode_t mode);
2-1 参数 const char *pathname 解释
这里的路径名称很简单:我们给出指定的文件名,如果前面不加路径,就是默认在进程所处文件下进行创建。
目标文件的路径(绝对路径或相对路径),例如 'data.txt' 或 '/home/user/log.txt'。


