dup2(fd1, fd2); 函数功能是将fd1 复制到fd2 上。但是怎么理解呢?
APUE 上有写,如果fd2 是一个已经打开的文件描述符则关闭它,但是如果fd1和fd2 相等,则不会关闭。
这最终的结果,实际上是:当你调用write() 函数(或者其它相关文件描述符的函数) 最终的结果是全部写到了fd1 上,当然了,如果是读也是一样的效果。最终都是从fd1 中读。
我前初一直想不通的是,如果fd2 关了,那这有什么用呢?现在想想,其实实际是fd2 如果是0, 1, 2 的话,那些调用printf() scanf() 相关的函数会起到直接读写fd1 文件的效果,例如管道。