Forzar el búfer de línea de la salida estándar cuando se canaliza hacia el tee
Generalmente,stdout
es de línea de búfer. En otras palabras, siempre y cuando suprintf
el argumento termina con una nueva línea, puede esperar que la línea se imprima instantáneamente. Esto no parece mantenerse cuando se usa una tubería para redirigir atee
.
Tengo un programa de C ++,a
, que genera cadenas, siempre\n
-terminado, astdout
.
Cuando se ejecuta por sí mismo (./a
), todo se imprime correctamente y en el momento adecuado, como se esperaba. Sin embargo, si lo canalizo atee
(./a | tee output.txt
), no imprime nada hasta que se cierra, lo que anula el propósito de usartee
.
Sé que podría arreglarlo agregando unfflush(stdout)
Después de cada operación de impresión en el programa C ++. ¿Pero hay una forma más limpia, más fácil? ¿Hay un comando que pueda ejecutar, por ejemplo, que podría forzarstdout
¿para ser búfer en línea, incluso cuando se usa una tubería?