C语言 我觉得dup2()是多余的



我的理解是,如果我有两个文件描述符

int fd1, fd2;

这两个函数:

dup2(fd1, fd2);

And -

fd1 = dup2(fd1, fd2);

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

dup2()有返回值的意义是什么?如果dup2()的返回值只是文件描述符,那么为什么要使用dup2呢?如果您可以直接说:

fd2 = fd1;

显然我在这里漏掉了什么。

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

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

然而,dup2的一个主要用途是将一个工作室描述符"重新打开"到一个已经打开的文件。例如,要在两个子进程之间建立管道,首先要使用pipe创建一个具有两个fds的管道。然后,在每个子进程中,dup2将用其中一个管道fds替换stdinstdout

嗯…它们是同一个函数。在第一种情况下,您只是忽略返回值。

并且所述返回值也可以是错误代码。如果你输入RTFM:D

也是根据TFM

dup2() makes newfd be the copy of oldfd, closing newfd first if necessary
. . .
(caveats left out)

相关内容

  • 没有找到相关文章

最新更新