Généralement, stdout
est de ligne-mis en mémoire tampon. En d'autres termes, aussi longtemps que votre printf
argument se termine par un saut de ligne, vous pouvez vous attendre à la ligne à imprimer instantanément. Cela ne semble pas tenir lors de l'utilisation d'un tuyau de redirection tee
.
J'ai un programme C++, a
des sorties des chaînes, toujours \n
-terminé, pour stdout
.
Lorsqu'il est exécuté par lui-même (./a
), tout ce qui s'imprime correctement et au bon moment, comme prévu. Cependant, si je pipe à tee
(./a | tee output.txt
), il n'a pas d'imprimer quoi que ce soit jusqu'à ce qu'elle se ferme, ce qui est contraire au but de l'utilisation d' tee
.
Je sais que je pourrais corriger cela en ajoutant un fflush(stdout)
après chaque opération d'impression dans le programme C++. Mais est-il plus propre, la plus facile? Est-il une commande je peux courir, par exemple, ce serait forcer stdout
à être en ligne de tampon, même lors de l'utilisation d'un tuyau?