Habituellement, stdoutest tamponné en ligne. En d'autres termes, tant que votre printfargument se termine par une nouvelle ligne, vous pouvez vous attendre à ce que la ligne soit imprimée instantanément. Cela ne semble pas tenir lorsque vous utilisez un tube vers lequel rediriger tee.
J'ai un programme C ++,, aqui génère des chaînes, toujours \nterminées, vers stdout.
Lorsqu'il est exécuté seul ( ./a), tout s'imprime correctement et au bon moment, comme prévu. Cependant, si je le dirige vers tee( ./a | tee output.txt), il n'imprime rien tant qu'il ne se ferme pas, ce qui va à l'encontre de l'objectif de l'utilisation tee.
Je sais que je pourrais le réparer en ajoutant un fflush(stdout)après chaque opération d'impression dans le programme C ++. Mais existe-t-il un moyen plus simple et plus propre? Existe-t-il une commande que je peux exécuter, par exemple, qui forcerait la mise stdouten tampon de ligne, même lorsque vous utilisez un tube?
expectme compiler carunbufferne semble pas être inclus par défaut dans OS X.