#include<unistd.h>#include<stdio.h>#include<stdlib.h>#include<sys/types.h>#include<limits.h>#include<string.h>#include<errno.h>#defineBUFSIZE4096//定义一个最大的读写空间intmain(void){intfd[2];charbuf[BUFSIZE]="hello!Iamyourbrother!\n";//缓冲区pid_tpid;intlen;if((pipe(fd))<0)//创建管道{perror("pipefailed\n");}if((pid=fork())<0)//创建第一个子进程{perror("forkfailed\n");}elseif(pid==0)//子进程{close(fd[0]);//关闭不使用的文件描述符write(fd[1],buf,strlen(buf));//发送字符串exit(0);}if((pid=fork())<0)//创建第二个子进程{perror("forkfailed\n");}elseif(pid>0)//父进程{close(fd[0]);close(fd[1]);exit(0);}else//第二个子进程中{close(fd[1]);//关闭管道文件描述符len=read(fd[0],buf,BUFSIZE);//读取消息write(STDOUT_FILENO,buf,len);//将消息输出到标准输出exit(0);}return0;}