Supongamos que tiene una tubería como la siguiente:
$ a | b
Si bdeja de procesar la entrada estándar, después de un tiempo la tubería se llena y escribe desde asu entrada estándar, se bloqueará (hasta que bcomience a procesar nuevamente o muera).
Si quisiera evitar esto, podría sentir la tentación de usar una tubería más grande (o, más simplemente buffer(1)) de esta manera:
$ a | buffer | b
Esto simplemente me daría más tiempo, pero al final afinalmente se detendría.
Lo que me encantaría tener (para un escenario muy específico que estoy abordando) es tener una tubería "con fugas" que, cuando está llena, dejaría caer algunos datos (idealmente, línea por línea) desde el búfer para permitir acontinuar procesamiento (como probablemente pueda imaginar, los datos que fluyen en la tubería son prescindibles, es decir, tener los datos procesados bes menos importante que apoder ejecutarlos sin bloquearlos).
Para resumir, me encantaría tener algo así como un búfer limitado y con fugas:
$ a | leakybuffer | b
Probablemente podría implementarlo con bastante facilidad en cualquier idioma, me preguntaba si hay algo "listo para usar" (o algo así como un bash one-liner) que me estoy perdiendo.
Nota: en los ejemplos estoy usando tuberías regulares, pero la pregunta se aplica igualmente a las tuberías con nombre
Si bien obtuve la respuesta a continuación, también decidí implementar el comando leakybuffer porque la solución simple a continuación tenía algunas limitaciones: https://github.com/CAFxX/leakybuffer