/* 2021090902028 */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
int main(){
int fd[2];
if (pipe(fd) == -1) {
perror("Failed to create the pipe");
return 1;
}
pid_t pid1, pid2;
pid1 = fork(); //创建子进程1
if(pid1 == -1){
perror("Failed to create the pipe 1\n");
return 1;
}else if(pid1 == 0){ // 进入子进程1
close(fd[0]);
char * str1 = "process 1: runing...\n";
write(fd[1], str1, strlen(str1));
return 0;
}else{
wait(NULL); //父进程等待子进程1结束
}
//2和1同理
pid2 = fork();
if(pid2 == -1){
perror("Failed to create the pipe 2\n");
return 1;
}else if(pid2 == 0){
close(fd[0]);
char * str2 = "process 2: runing...\n";
write(fd[1], str2, strlen(str2)+1);
return 0;
}else{
wait(NULL);
}
close(fd[1]);
char buffer[200];
int n = read(fd[0], buffer, sizeof(buffer));
printf("%s\n",buffer);
return 0;
}