目录
在 C++ 编程的世界里,文件操作是一项基础且重要的技能。而在文件操作的背后,文件描述符和文件流指针扮演着至关重要的角色。它们是我们与文件系统沟通的桥梁,理解它们的工作原理和使用方法,能让我们更加高效地进行文件操作。今天,就让我们一起深入探索文件描述符与文件流指针的奥秘。
一、文件描述符:操作系统的小助手
1.1 什么是文件描述符
文件描述符是操作系统为每个打开的文件或设备分配的一个非负整数。在 Linux 等类 Unix 系统中,每个进程都有一个文件描述符表,文件描述符就是这个表的索引。通过文件描述符,进程可以方便地对文件进行读写等操作。
1.2 常见的文件描述符
每个进程启动时,都会默认打开三个文件描述符:
- 标准输入(stdin):文件描述符为 0,通常对应键盘输入。
- 标准输出(stdout):文件描述符为 1,通常对应终端屏幕输出。
- 标准错误(stderr):文件描述符为 2,用于输出错误信息。
1.3 使用文件描述符进行文件操作
下面是一个简单的 C++ 代码示例,展示了如何使用文件描述符进行文件的读写操作:
#include <iostream>
#include <fcntl.h>
#include <unistd.h>
#include <cstring>
int main() {
// 打开文件
int fd = open("test.txt", O_RDWR | O_CREAT, 0666);
if (fd == -1) {
perror("open");
return 1;
}
// 写入数据
const char* data = "Hello, File Descriptor!";
ssize_t bytes_written = write(fd, data, strlen(data));
if (bytes_written == -1) {
perror("write");
close(fd);
return 1;
}
// 将文件指针移到文件开头
lseek(fd, 0, SEEK_SET