Das folgende ist ein einfaches C
Programm:Warum druckt printf() nicht in eine Datei, wenn stdout in diese Datei umgeleitet wird?
#include <unistd.h>
#include <stdio.h>
int main(void)
{
while (1)
{
printf("Hello World\n");
sleep(1);
}
}
Erstellen und führen Sie es, die "Hello World
" im Terminal ausgedruckt werden:
$ ./a.out
Hello World
Hello World
Hello World
Aber wenn die stdout
in eine Datei umgeleitet wird, Nach einer Weile, gibt es immer noch nichts in der Datei:
$ ./a.out > log.txt
^C
$ cat log.txt
$
Warum nicht die printf
Ausgabe in die Datei, die stdout
umgeleitet wird?
Es tut sicherlich, aber Sie spülen es nicht. –
Zeilenpufferung (also das Leeren jeder Zeile) oder vollständiger ungepufferter Inhalt erfolgt automatisch auf vielen Plattformen, die zu einem TTY gehen, aber nicht in eine Datei gehen. –
"Strg + C" auch nicht bündig? –