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);