我试了一下,看看它是否有效,但最终没有。
i = open("something", O_RDWR);
for(i ; i<10 ; i++);
{
if(dup2(i, i+1 ) == -1 )
{
printf("Dup failedn");
exit(1);
}
}
我对可执行文件进行了格式化,输出如下:
open("something", O_RDWR) = 3
dup2(10, 11) = -1 EBADF (Bad file descriptor)
好像只执行了最后一次dup操作!
有趣的是,当我不使用循环时,它可以完美地工作:
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);
字符输出:
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
dup在for循环中失败的原因是什么?有什么我遗漏的错误吗?
这是假的终止;
在line2 -删除它!循环将一直运行到10点,而不执行任何操作(最后的分号表示空语句),然后用大括号括起来的命令执行一次。
你的for循环中有一个打字错误:
for(i ; i<10 ; i++);
应为
for(i ; i<10 ; i++)