Configuración de tuberías de lectura de tuberías con nombre sin bloquear en bash

Busco llamar a un subproceso con un descriptor de archivo abierto a una tubería determinada, de modo que la llamada open () no se cuelga esperando que el otro lado de la tubería reciba una conexión.

Demostrar:

$ mkfifo /tmp/foobar.pipe
$ some_program --command-fd=5 5</tmp/foobar.pipe

En este caso,some_program No se ejecuta hasta que algún proceso tiene/tmp/foobar.pipe abierto para escribir; sin embargo,some_program tiene efectos útiles incluso cuando no está recibiendo comandos, por lo que el comportamiento deseado es parasome_program para ser ejecutado de inmediato.

Mecanismos para hacer esto mediante la ejecución a través de un lenguaje de script alternativo (python, perl, etc.) o un contenedor C que se abre/tmp/foobar.pipe con elO_NONBLOCK bandera son obvias Estoy buscando una solución de puro bash, si una fuera posible.

Respuestas a la pregunta(2)

Su respuesta a la pregunta