stdlib librerias descargar code c stdio

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