Программа может читать все данные из канала. Однако программа просто остановится. Это не может продолжать обрабатывать. Я думаю, что это остановится в дочернем процессе.
//I created two pipe before fork (fd[0] and fd[1]).
//child process
if(pid == 0){
close(fd[a][1]);
buf[6];
int i;
while ((i = read(fd[a][0], buf, 6)) > 0) {
printf("%s", buf);
}
close(fd[a][0]);
exit(0);
}
//parent process
write(fd[a][1], "12", 2);
write(fd[a][1], "14", 2);
write(fd[a][1], "15", 2);
write(fd[b][1], "12", 2);
write(fd[b][1], "14", 2);
write(fd[b][1], "15", 2);
printf("done!\n");
close(fd[0][1]);
close(fd[1][1]);
wait(NULL);
printf("Really done!!!\n");
... // The program cannot run after wait(NULL);
--output--
121415done