1、什么是文件重定向?
简单来说,文件重定向可以理解为文件描述符重新选定自己的指向。
2号文件描述符和3号文件描述符原本的指向如下。2号文件描述符之所以指向了stderr,是因为数组下标为2的元素填充的是stderr结构体的地址

发生文件重定向以后,我们断开了2号文件描述符和stderr、3号文件描述符和log.txt的联系,让2号文件描述符改变指向,指向 log.txt 文件。其本质就是把原本下标为 3 中保存的地址拷贝到下标为 2 的数组位置。

2、文件重定向函数 dup2
dup2函数可以修改文件描述符的指向,让一个文件描述符指向其他文件描述符原本指向的内容。函数声明如下:

从上面可以了解到,让2号文件描述符重定向到 log.txt,其实就是把原本3号描述符保存的地址拷贝到2号描述符的位置。
因此, 3号描述符是曾经保存log.txt地址的位置,2号描述符是现在保存log.txt地址的位置,这里的oldfd = 3,newfd = 2
dup2(3, 2);








![[综][PDPTW]A survey on pickup and delivery problems](https://img-blog.csdnimg.cn/1e736345a94a4beb9a6e12e20483629d.png)









