C Äquivalent Autoflushing (flush stdout nach jedem Schreib)?
Frage
In Perl kann ich geben:
$|++;
und alles zu STDOUT gedruckt wird automatisch fflush () ed.
Gibt es ein Äquivalent in C? Mit anderen Worten, ist es eine Möglichkeit, ich stdio automatisch nach jedem printf Fflush stdout sagen kann (), es ist die Art und Weise automatisch leert Stderr?
Lösung
Versuchen setvbuf(stdout, NULL, _IONBF, 0)
. Es ändert sich stdout
zu ungepufferte (_IONBF
) Modus.
Andere Tipps
Ich habe dies nicht getan, aber _IOLBF wäre die richtige Antwort sein.
$ man setvbuf
...
NAMEN
setvbuf - zuweisen Pufferung auf einen Strom
SYNTAX
#include
int setvbuf(FILE *restrict stream, char *restrict buf, int type,
size_t size);
BESCHREIBUNG
Die setvbuf () Funktion verwendet werden kann, nachdem der Strom zu spitz durch Strom mit einer geöffneten Datei zugeordnet ist, aber vor jedem anderen Betrieb (außer einem erfolglosen Anruf (), um setvbuf) auf dem durchgeführt
Strom. Das Argument bestimmt, wie Strom gepuffert werden soll, wie folgt:
* {_IOFBF} shall cause input/output to be fully buffered.
* {_IOLBF} shall cause input/output to be line buffered.
* {_IONBF} shall cause input/output to be unbuffered.
Werfen Sie einen Blick auf setbuf () und setvbuf ().