为什么这样用就不行,关于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]);
就不能通过父进程打印,虽然打印出来了,可是是子进程打印出来的.
为什么?谢谢