Aller au contenu

Mise en tampon

Mise en tampon (en anglais buffering) : la bibliothèque C, que la plupart des outils utilisent pour écrire, accumule la sortie standard dans un tampon de quelques kilooctets et ne l'écrit qu'une fois plein, sauf quand la sortie est un terminal : elle écrit alors à chaque fin de ligne. La sortie d'erreur, elle, n'est pas mise en tampon.

Invisible au terminal, ce comportement devient flagrant dans un tube qui suit un flux continu, comme tail -F journal | grep 503 | cut ... : grep, qui n'écrit plus vers un terminal, retient ses lignes et la suite du tube ne voit rien pendant de longues minutes. Les remèdes : une option propre à l'outil (grep --line-buffered, sed -u, fflush() dans awk, jq --unbuffered), ou stdbuf -oL de coreutils, qui ne fonctionne qu'avec les programmes qui utilisent les tampons de la bibliothèque C.

Dans les cours

Voir aussi