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?

War es hilfreich?

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 ().

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top