首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我觉得dup2()是多余的

我觉得dup2()是多余的
EN

Stack Overflow用户
提问于 2014-03-17 20:07:03
回答 2查看 155关注 0票数 0

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

代码语言:javascript
复制
int fd1, fd2;

这两项职能:

代码语言:javascript
复制
dup2(fd1, fd2);

还有-

代码语言:javascript
复制
fd1 = dup2(fd1, fd2);

实际上会完成同样的任务。

dup2()有一个返回值的意义是什么?如果dup2()的返回值只是文件描述符,那么如果您只需说:

代码语言:javascript
复制
fd2 = fd1;

很明显我在这里漏掉了什么东西。

顺便说一句:请不要告诉我去读这本手册,或者一些我不拥有的书。这没什么用。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-03-17 20:40:09

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

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

票数 1
EN

Stack Overflow用户

发布于 2014-03-17 20:14:00

嗯..。它们的功能是相同的。在第一种情况下,您只是忽略了返回值。

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

也是根据TFM

代码语言:javascript
复制
dup2() makes newfd be the copy of oldfd, closing newfd first if necessary
. . .
(caveats left out)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22464260

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档