日期:2014-05-16  浏览次数:21290 次

请问 dup(fd1, fd2) 和 fd2=fd1的区别
在Linux中,有这样一个复制文件描述符的函数dup(fd1,   fd2),作用是将fd1复制给
fd2.     小弟有个疑问:如果将fd1直接赋值给fd2(fd2=fd1)不也是一样的吗?


它们之间有什么区别吗?

请各位大大指教!

------解决方案--------------------
dup2(fd1, fd2)后,fd1和fd2的值不同,但都指向打开的同一文件。
fd1=fd2后,fd1和fd2相同。

比如要把输出到屏幕的结果重定向到文件中,就可以用到dup2。
因为printf之类的函数总是往1号fd中写,我们可以:
dup2(filefd,1);
然后printf的输出就到filefd指定的文件中了。