文章目录
(1)总结
从讲文件描述符开始,我们就引入了重定向的概念。读到这里,大家应该能够明白,重定向产生的原因就是文件描述符在分配时趋向于数值小的,而在用户层,stdout这个文件指针指向的文件已经封装了,并且它的fd就是1,这是不能修改的,所以我们一上来关闭了1号文件,然后新创建了一个文件它的文件描述符就会分配为被1,同时此时写入时,像printf这类函数默认使用的输出流就是stdout,但是我们知道它的1指向的已经是我们新生成的那个文件了,所以这就重定向的本质
(2)使用系统调用dup2完成重定向
前面的那种关闭1号文件而完成重定向的操作显得有些不合理,因为标准输入,标准输出和标准错误作为默认的文件,不应该被关闭
所以我们可以使用dup2
完成重定向。dup2
的函数原型如下
int dup2(