Estoy buscando llamar a un subproceso con un descriptor de archivo abierto en una tubería dada de tal manera que la llamada open() no cuelgue esperando que el otro lado de la tubería recibir una conexiónConfigurando tuberías leyendo desde tuberías nombradas sin bloquear en bash
Para 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 escritura; sin embargo, some_program
tiene efectos útiles incluso cuando no está recibiendo comandos, por lo que el comportamiento deseado es some_program
para ejecutarse inmediatamente.
Mecanismos para hacer esto mediante la ejecución a través de un lenguaje de scripts alternativo (python, perl, etc.) o un contenedor C que abre /tmp/foobar.pipe
con el indicador O_NONBLOCK
son obvios; Estoy buscando una solución pura-bash, en caso de que sea posible.
tienes razón, era un error tipográfico. solo lo edité. Y sí, el proceso de fondo es feo, es por eso que lo llamé hack :) – Sec