为什么这样用就不行,关于dup函数的问题.

yrj 2002-11-12 11:58:21
我创建了一对管道
char szBuffer[81];
int fd[2];
pipe(fd);
然后创建子进程
childpid=fork();
if(childpid==0)
{
close(1);
dup(fd[1]);
execlp("ls","","-l",NULL);
}
else
{
close(fd[1]);
while(1)
{
memset(szBuffer,0,81);
if(read(fd[0],szBuffer,80))
printf(szBuffer);
else
break;
}
}这样就正常的通过父进程将ls命令的输出打印出来.
如果将
close(1);
dup(fd[1]);
改成
dup2(1,fd[1]);
就不能通过父进程打印,虽然打印出来了,可是是子进程打印出来的.
为什么?谢谢
...全文
35 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
liuto 2002-11-13
  • 打赏
  • 举报
回复
dup2参数给反了
dup2(fd[1],1);

23,127

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧