首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

pipe 跟 dup2运用理解

2012-06-29 
pipe 和 dup2运用理解最近新学习pipe和dup2一起运用,下面的输出搞不明白是怎么来的程序源代码:#include s

pipe 和 dup2运用理解
最近新学习pipe和dup2一起运用,下面的输出搞不明白是怎么来的
程序源代码:
#include <stdio.h>  
#include <stdlib.h>  
#include <unistd.h>  
int main( )  
{  
int pfds[2];  
if( pipe(pfds)==0 )  
{  
if( fork()==0 )  
{  
//close(1);
printf("child.\n");
dup2( pfds[1],1);  
close( pfds[0]);  
printf("child close read.\n");
execlp( "ls","ls","-l",NULL ); 
printf("child end.\n");
}  
else  
{  
//close(0);  
printf("parent.\n");
dup2(pfds[0],0);  
close(pfds[1]);
printf("parent close write.\n");
execlp( "wc","wc","-l",NULL ); 
printf("parent end.\n");
}  
}  
return 0;  


输出结果:
parent.
parent close write.
child.
65

为什么parent end 没有输出?还有65是怎么输出来的?整个的执行顺序是怎样?
请各位大侠指教!

[解决办法]
printf("child end.\n");
printf("parent end.\n");
这两句没输出是因为程序根本不可能执行到这里来!前面说了execple是不会返回的。搜索下这个的作用。



printf("child.\n");不可能没输出。
如果没输出 , 是因为你上一句close(1)了。。也就是你测试的时候有close(1). 你帖出来的代码却没有close(1), 被你注释。你好好试试。

热点排行