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?

Respuestas a la pregunta(5)

Su respuesta a la pregunta