Domanda

In Perl, posso digitare:

$|++;

e qualsiasi cosa stampata su STDOUT verrà automaticamente fflush () ed.

Esiste un equivalente in C? In altre parole, c'è un modo in cui posso dire a stdio di scaricare automaticamente stdout dopo ogni printf (), il modo in cui scarica automaticamente stderr?

È stato utile?

Soluzione

Prova setvbuf(stdout, NULL, _IONBF, 0). Cambia stdout in modalità senza buffer (_IONBF).

Altri suggerimenti

Non l'ho fatto, ma _IOLBF sarebbe la risposta giusta.

$ man setvbuf
...
NAME
setvbuf - assegna il buffering a uno stream

SINOSSI
#include < stdio.h >

   int setvbuf(FILE *restrict stream, char *restrict buf, int type,
          size_t size);

DESCRIZIONE
La funzione setvbuf () può essere utilizzata dopo che lo stream puntato da stream è associato a un file aperto ma prima che qualsiasi altra operazione (diversa da una chiamata non riuscita a setvbuf ()) venga eseguita sul        ruscello. Il tipo di argomento determina come deve essere bufferizzato lo stream, come segue:

    * {_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.

Dai un'occhiata a setbuf () e setvbuf ().

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top