pipe 和 dup2运用理解

fs_te_ming fs_te_ming 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
最近新学习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是怎么输出来的?整个的执行顺序是怎样?
请各位大侠指教!
...全文
评论 9
收藏 已收藏
分享
返回顶部
fs_te_ming
C语言 70,040 成员 243,237 内容