管道初战-利用父子进程实现管道

利用父子进程实现管道

管道实质是一方发送,一方接收
利用fork父子进程,将父进程视为管道输入端,子进程视为管道接收端

利用fork返回值的三个状态;
当pid<0时,创建进程失败;
当pid>0时,进入父进程;
当pid=0时,进入子进程;

管道初战-利用父子进程实现管道

当进入父进程时,关闭读,令fd[0];进入写fd[1];利用write函数向缓冲区写入"from father pid";
然后在子进程,关闭写,令fd[1];进入读fd[0];利用read函数读出缓冲区的buf;
然后打印出来
运行结果:
管道初战-利用父子进程实现管道

管道的输出比输入先运行,结果会怎样

因为父进程模拟管道的输入,所以将父进程延时3秒
管道初战-利用父子进程实现管道
运行结果:

管道初战-利用父子进程实现管道
结果是"this is child pid"等待3秒之后,显示接下来的结果
所以是进程的输出等待输入的响应,然后再进行操作