首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >函数dup2(int,int )在for()循环中失败

函数dup2(int,int )在for()循环中失败
EN

Stack Overflow用户
提问于 2015-06-09 15:13:22
回答 2查看 153关注 0票数 1

我尝试这个是为了寻找乐趣,看看它是否有效,但最终还是失败了。

代码语言:javascript
复制
    i = open("something", O_RDWR);
    for(i ; i<10 ; i++);
    {
            if(dup2(i, i+1 ) == -1 )
            {
                  printf("Dup failed\n");
                  exit(1);
            }

    }

我已经执行了可执行文件,输出如下:

代码语言:javascript
复制
open("something", O_RDWR)                   = 3
dup2(10, 11)                  = -1 EBADF (Bad file descriptor)

似乎只执行了最后一次dup操作!

有趣的是,当我dup没有循环时,它就完美地工作了:

代码语言:javascript
复制
i = open("something", O_RDWR);
dup2(i,i+1);
i++;
dup2(i,i+1);
i++;
dup2(i,i+1);
i++;
dup2(i,i+1);
i++;
dup2(i,++i);

斯特拉斯的产出:

代码语言:javascript
复制
open(".ping", O_RDWR)                   = 3
dup2(3, 4)                              = 4
dup2(4, 5)                              = 5
dup2(5, 6)                              = 6
dup2(6, 7)                              = 7
dup2(7, 8)                              = 8

在for循环中dup失败的原因是什么?我漏掉了什么错误吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-06-09 15:24:03

这是假终止;在line2 -删除它!循环将运行到10,而什么也不做(最后的分号表示空语句),然后大括号中的命令只执行一次。

票数 3
EN

Stack Overflow用户

发布于 2015-06-09 15:39:16

在for循环中有一个错误:

代码语言:javascript
复制
for(i ; i<10 ; i++);

应该是

代码语言:javascript
复制
for(i ; i<10 ; i++)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30741979

复制
相关文章

相似问题

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