据我了解,如果我有两个文件描述符

int fd1, fd2;


这两个功能:

dup2(fd1, fd2);


还有-

fd1 = dup2(fd1, fd2);


实际上将完成相同的任务。

dup2()具有返回值的意义是什么?
并且如果dup2()的返回值只是文件描述符,那么为什么可以使用dup2呢?

fd2 = fd1;


很明显,这里我缺少一些东西。

顺便说一句:请不要告诉我阅读手册或我不拥有的书。那没有帮助。

最佳答案

您所缺少的是它不会复制包含fd值的变量,而是生成第二个fd,该fd指向与原始fd相同的打开文件。然后,这两个文件描述符将独立起作用。

但是,dup2的主要用途是将stdio描述符“重新打开”到已打开的文件。例如,要在两个子进程之间进行管道传输,您首先要使用pipe创建具有两个fds的管道。然后,在每个子进程中,将使用dup2用管道fds之一替换stdinstdout

关于c - 我觉得dup2()是多余的,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22464260/

10-12 03:10