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

作者: MZCL2012 2014-07-03 11:05:23
#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结束先退出了,执行父进程后,因为子进程已经退出 将不会输出结果, 为什么还会有结果呢

相关资讯