Когда просто выводим "Hello world" в stdout и завершаем работу программы - тут все ясно, но если программа ПРОДОЛЖАЕТ выполняться, то получается интересный фокус:
/***** begin test.c *****/
#include <stdio.h>
int main () {
char c;
fprintf(stdout, "Hello world!\n");
c = fgetc(stdin);
return 0;
}
/***** end test.c *****/
$ make test
$ ./test
c
Hello world!
$ ./test > 1
$ ^C
$ cat 1
$
Как видим, если аварийно (по Ctrl-C) завершить работу программы, то никакого "Hello world!" в файле "1" не будет. Хотя код вывода "Hello world" отработал. Как сделать так, чтобы перенаправление в файл работало корректно, в унисон с кодом программы?