我尝试这个是为了寻找乐趣,看看它是否有效,但最终还是失败了。
i = open("something", O_RDWR);
for(i ; i<10 ; i++);
{
if(dup2(i, i+1 ) == -1 )
{
printf("Dup failed\n");
exit(1);
}
}我已经执行了可执行文件,输出如下:
open("something", O_RDWR) = 3
dup2(10, 11) = -1 EBADF (Bad file descriptor)似乎只执行了最后一次dup操作!
有趣的是,当我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在for循环中dup失败的原因是什么?我漏掉了什么错误吗?
发布于 2015-06-09 15:24:03
这是假终止;在line2 -删除它!循环将运行到10,而什么也不做(最后的分号表示空语句),然后大括号中的命令只执行一次。
发布于 2015-06-09 15:39:16
在for循环中有一个错误:
for(i ; i<10 ; i++);应该是
for(i ; i<10 ; i++)https://stackoverflow.com/questions/30741979
复制相似问题