Forçar o buffer de linha de stdout ao canalizar para tee

Usualmente,stdout está com buffer de linha. Em outras palavras, desde que seuprintf argumento termina com uma nova linha, você pode esperar que a linha seja impressa instantaneamente. Isso não parece se manter ao usar um pipe para redirecionar paratee.

Eu tenho um programa em C ++a, que gera strings, sempre\n-terminado, parastdout.

Quando é executado sozinho (./a), tudo imprime corretamente e no momento certo, como esperado. No entanto, se eu canalizar paratee (./a | tee output.txt), não imprime nada até que saia, o que anula o propósito de usartee.

Eu sei que eu poderia consertar isso adicionando umfflush(stdout) após cada operação de impressão no programa C ++. Mas existe uma maneira mais limpa e mais fácil? Existe um comando que eu posso executar, por exemplo, que forçariastdout para ser com buffer de linha, mesmo quando estiver usando um pipe?

questionAnswers(5)

yourAnswerToTheQuestion