Pregunta

En Perl, puedo escribir:

$|++;

y todo lo que se imprima en STDOUT se eliminará automáticamente () 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 forma en que elimina automáticamente stderr?

¿Fue útil?

Solución

Prueba setvbuf(stdout, NULL, _IONBF, 0). Cambia stdout al modo sin búfer (_IONBF).

Otros consejos

No he hecho esto, pero _IOLBF sería la respuesta correcta.

$ man setvbuf
...
NOMBRE
setvbuf: asignar almacenamiento en búfer 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 con un archivo abierto, pero antes de que se realice cualquier otra operación (que no sea una llamada fallida a setvbuf ())        corriente. El tipo de argumento determina cómo se almacenará 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.

Eche un vistazo a setbuf () y setvbuf ().

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top