Di solito stdout
è con buffer di riga. In altre parole, finché il tuo printf
argomento finisce con una nuova riga, puoi aspettarti che la riga venga stampata immediatamente. Questo non sembra essere valido quando si utilizza una pipe a cui reindirizzare tee
.
Ho un programma C ++ a
, che restituisce stringhe, sempre \n
terminate, a stdout
.
Quando viene eseguito da solo ( ./a
), tutto viene stampato correttamente e al momento giusto, come previsto. Tuttavia, se lo installo in tee
( ./a | tee output.txt
), non stampa nulla finché non si chiude, il che vanifica lo scopo dell'uso tee
.
So che potrei risolverlo aggiungendo una fflush(stdout)
dopo ogni operazione di stampa nel programma C ++. Ma esiste un modo più semplice e più pulito? C'è un comando che posso eseguire, ad esempio, che costringerebbe stdout
ad essere bufferizzato di riga, anche quando si utilizza una pipe?
expect
me stesso in quantounbuffer
non sembra essere incluso di default in OS X.