librerias - C equivalente de autoflush(flush stdout después de cada escritura)?
stdio.h github (3)
Eche un vistazo a setbuf () y setvbuf ().
En Perl, puedo escribir:
$|++;
y todo lo que se imprima en STDOUT será automáticamente fflush () ed.
¿Hay un equivalente en C? En otras palabras, ¿hay alguna forma en que pueda decirle a stdio que elimine automáticamente stdout después de cada printf (), la manera en que vacía automáticamente stderr?
No he hecho esto, pero _IOLBF sería la respuesta correcta.
$ man setvbuf
...
NOMBRE
setvbuf - asigna buffering a una secuencia
SINOPSIS
#include <stdio.h>
int setvbuf(FILE *restrict stream, char *restrict buf, int type,
size_t size);
DESCRIPCIÓN
La función setvbuf () se puede usar después de que la secuencia a la que apunta la secuencia esté asociada a un archivo abierto, pero antes de que se realice en la transmisión otra operación (que no sea una llamada fallida a setvbuf ()). El tipo de argumento determina cómo se almacenará la memoria intermedia de la secuencia, de la siguiente manera:
* {_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.
Pruebe setvbuf(stdout, NULL, _IONBF, 0)
. Cambia el modo _IONBF
modo sin búfer ( _IONBF
).