我的理解是如果我有两个文件描述符
int fd1, fd2;这两项职能:
dup2(fd1, fd2);还有-
fd1 = dup2(fd1, fd2);实际上会完成同样的任务。
dup2()有一个返回值的意义是什么?如果dup2()的返回值只是文件描述符,那么如果您只需说:
fd2 = fd1;很明显我在这里漏掉了什么东西。
顺便说一句:请不要告诉我去读这本手册,或者一些我不拥有的书。这没什么用。
发布于 2014-03-17 20:40:09
您所缺少的是,它不复制包含fd值的变量,而是生成第二个fd,它引用与原始fd相同的打开文件。然后,这两个文件描述符独立工作。
然而,dup2的一个主要用途是“重新打开”已经打开的文件的stdio描述符。例如,要在两个子进程之间输送管道,首先要使用pipe创建一个具有两个fds的管道。然后,在每个子进程中,将使用dup2将stdin或stdout替换为管道fds之一。
发布于 2014-03-17 20:14:00
嗯..。它们的功能是相同的。在第一种情况下,您只是忽略了返回值。
并且所述的返回值也可以是一个错误代码。如果你的RTFM :D
也是根据TFM
dup2() makes newfd be the copy of oldfd, closing newfd first if necessary
. . .
(caveats left out)https://stackoverflow.com/questions/22464260
复制相似问题