//child process
char buf[20];
read(fd[0][0], buf, 20);
printf("%s", buf);
//parent process
write(fd[0][1], "12", 20);
write(fd[0][1], "14", 20);
write(fd[0][1], "15", 20);
--output--
12
//then the program just exit. It cannot print out 14 and 15.
Могу ли я узнать, как можно решить эту проблему?Можно ли заставить дочерний процесс ждать, пока он действительно не прочитает данные из канала?
Я отредактировал свою программу.И он может читать все данные.Однако программа просто остановится.Это не может продолжать обрабатывать.Я думаю, что это остановится в дочернем процессе.
//child process
buf[6];
int i;
while ((i = read(fd[0][0], buf, 6)) > 0) {
printf("%s", buf);
}
//parent process
write(fd[0][1], "12", 2);
write(fd[0][1], "14", 2);
write(fd[0][1], "15", 2);
printf("done!\n");
--output--
121415done
//The program just stopped in child process.