Poniżej znajduje się prosty C
Program:Dlaczego printf() nie wypisuje do pliku, gdy standardowe wyjście jest przekierowane do tego pliku?
#include <unistd.h>
#include <stdio.h>
int main(void)
{
while (1)
{
printf("Hello World\n");
sleep(1);
}
}
budowy i uruchomienia, tym „Hello World
” zostaną wydrukowane w terminalu:
$ ./a.out
Hello World
Hello World
Hello World
Ale jeśli stdout
jest przekierowywane do pliku, po pewnym czasie w pliku nadal nie ma nic:
$ ./a.out > log.txt
^C
$ cat log.txt
$
Dlaczego nie printf
wyjście do pliku, do którego przekierowano stdout
?
Z pewnością tak, ale nie spuszczasz go. –
Buforowanie linii (czyli płukanie każdej linii) lub zawartość niebuforowana liniowo jest automatyczna na wielu platformach przechodzących do TTY, ale nie przechodzących do pliku. –
"Ctrl + C" również nie spłukuje? –