У меня есть скрипт Bash work.sh
, который получает что-то из STDIN и выводит его на STDOUT .
У меня также есть программа на C, return_input
, который также получает что-то от STDIN и printf до STDOUT
Но когда я их цепью таким образом:
./work.sh |./return_input
printf
вreturn_input
вывод на экран только при выходе.Почему?
Упрощенно:
[root@ test]# cat work.sh
#!/bin/bash
for i in {1..5}
do
echo test
read
done
Выход cat return_input.c
,
#include <stdio.h>
void return_input (void){
char array[30];
gets (array);
printf("%s\n", array);
printf("%#p\n", *(long *)(array+40));
}
main() {
while(1 == 1)return_input();
return 0;
}