文件描述符中0标准输入,1标准输出,2标准错误
这三个在正常情况下都存在着
你任意open一个文件得到的文件描述符都是至少从3开始
dup2(fd,1)=dup2(fd,STDOUT_FILENO)
dup2(fd,1)
这里复制的是文件描述符(fd)
标准输出(stdout)也就是程序在屏幕终端输出结果。
那dup2(fd,1)的作用就是关闭标准输出,本应该写入到stdout的内容,标准输出已经重定向到目标文件(fd)中,故向标准输出写的数据将会写到目标文件(fd所表示的文件)中。
不是将test.txt变成屏幕,而是将写向屏幕的写向test.txt(当然你可以理解成fd->屏幕)
同理dup2(fd,0)也就是是关闭标准输入,本应该从stdin写进的内容,标准输入已经重定向到目标文件(fd)中,目标文件(fd所表示的文件)中的内容也就被当做标准输入。(当然你可以理解为fd->键盘)