Одна проблема связана со следующей строкой:
scanf("%s\n",buffer);
scanf
не читает конечный пробел (включая символы новой строки), если это не соответствует директиве.Но директива существует здесь.Таким образом, он ждет другой новой строки после обычной новой строки, которая следует за вводом.
Удалите \n
в обоих операторах scanf
.
Во-вторых, вам нужно изменить свой fprintf
операторов для добавления \n
в них.
fprintf(stderr,"REC: %s\n",buffer);
В-третьих, не добавляйте 1 к strlen(arr)
в write
.Измените его на:
write(pipes[1],arr,strlen(arr));
Работает.См. live демо :
Вывод:
REC: HelloWorld
REC: HelloWorld
Real time: 2.082 s
User time: 0.043 s
Sys. time: 0.037 s
CPU share: 3.85 %
Exit code: 0