据我了解,如果我有两个文件描述符
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之一替换stdin
或stdout
。
关于c - 我觉得dup2()是多余的,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22464260/