红联Linux门户
Linux帮助

管道通信:父进程向子进程发送信息!

发布时间:2014-07-03 11:05:23来源:红联作者:MZCL2012
#include
#include
#include
#include
#include

int main(int argc,char *argv[])
{
int pfd[2];
pid_t cpid;
char buf;
pipe(pfd);//创建管道
cpid =fork();//创建进程
if(cpid ==0)
{
close(pfd[1]);//关闭写文件描述符
while((read(pfd[0],&buf,1) >0)) //读取
write(STDOUT_FILENO,&buf,1);
write(STDOUT_FILENO,"\n",1);
close(pfd[0]);
exit(0);
}
else if(cpid >0)
{
close(pfd[0]);
write(pfd[1],argv[1],strlen(argv[1]));
close(pfd[1]);
wait(NULL);
exit(0);
}
return 0;
}

输入:./pipetest abc
输出: abc
疑问: 创建子进程后,一般是子进程开始执行即(cpid==0) 但这时候父进程还没有写啊,如果子进程中while结束先退出了,执行父进程后,因为子进程已经退出 将不会输出结果, 为什么还会有结果呢
文章评论

共有 1 条评论

  1. MZCL2012 于 2014-07-03 14:58:53发表:

    没人知道啊。。