linux stdbuf – la opción stdin con búfer de línea no existe

La página man para el command stdbuf establece que el modo de línea-buffer no es válido como una opción estándar de buffer de input. ¿Cuál es la razón para esto?

tail -f access.log | stdbuf -iL cut -d' ' -f1 | uniq stdbuf: line buffering stdin is meaningless Try `stdbuf --help' for more information. 

Simplificado, stdbuf es un envoltorio de la funcionalidad de stdio. El almacenamiento en línea de líneas de flujos de input no está definido en stdio; No puedo encontrar ningún documento de estándares que diga lo que significa, por lo que es literalmente insignificante en lo que respecta a los estándares.

Suponiendo un comportamiento análogo al almacenamiento en línea de línea estándar, el almacenamiento en línea de líneas de stdin requeriría llamar a read () una vez por cada carácter leído, porque no hay otra manera de garantizar que no lea más allá de una nueva línea en un descriptor. Dado que el punto de almacenamiento en memory intermedia es networkingucir el número de llamadas al sistema, no es sorprendente que la biblioteca stdio no implemente esto.

Como autor de stdbuf, permítame dirigirlo a la sección "problemas de almacenamiento intermedio de input stdio" en http://www.pixelbeat.org/programming/stdio_buffering/