#include <unistd.h> #include <sys/types.h> #include <sys/wait.h> #include <errno.h> #include <string.h> #include <stdio.h> #include <stdlib.h> int main(){ int fd[2];//管道 char inbuff[64],outbuff[64]; pid_t pid1,pid2; pipe(fd);//創建管道 fd[1]用於寫數據,fd[0]用於讀數據 pid1=fork();//創建子進程1 if(pid1==0){ close(fd[0]);//關閉管道用於讀數據的一側 sprintf(inbuff,"Child 1 is sending!"); write(fd[1],inbuff,32);//在子進程1中往管道寫32字節的的數據 sleep(5); exit(0); } else if(pid1>0){ waitpid(pid1,NULL,0);//等待子進程1執行完畢 pid2=fork();//創建子進程2 if(pid2==0){ close(fd[0]);//關閉管道用於讀數據的一側 sprintf(inbuff,"Child 2 is sending!"); write(fd[1],inbuff,32);//在子進程2中往管道繼續寫32字節的的數據 sleep(5); exit(0); } else if(pid2>0){ close(fd[1]);//關閉用於寫數據的一側 read(fd[0],outbuff,32);//父進程讀取管道中的32字節的數據 printf("%s\n",outbuff); read(fd[0],outbuff,32);//父進程繼續讀取管道中的32字節的數據 printf("%s\n",outbuff); } } return 0; }關鍵函數fork pipe可以參考我轉載的兩篇博客:
fork:http://blog.csdn.net/ShanaMaid/article/details/51345361
pipe:http://blog.csdn.net/myarrow/article/details/9037135