Je cherche à appeler un sous-processus avec un descripteur de fichier ouvert à un canal donné de telle sorte que l'appel open() ne soit pas en attente de l'autre côté du tube recevoir une connexion.Configurer les pipelines lisant à partir de tubes nommés sans bloquer dans bash
Pour démontrer:
$ mkfifo /tmp/foobar.pipe
$ some_program --command-fd=5 5</tmp/foobar.pipe
Dans ce cas, some_program
est pas exécuté jusqu'à ce qu'un processus a /tmp/foobar.pipe
ouvert pour l'écriture; cependant, some_program
a des effets utiles même s'il ne reçoit pas de commandes, donc le comportement souhaité est some_program
pour être exécuté immédiatement. Les mécanismes permettant de le faire en exécutant un langage de script alternatif (python, perl, etc) ou un wrapper C qui ouvre /tmp/foobar.pipe
avec le drapeau O_NONBLOCK
sont évidents; Je cherche une solution pur-bash, devrait-on être possible.
vous avez raison, c'était une faute de frappe. juste l'édité. Et oui le processus d'arrière-plan est moche, c'est pourquoi je l'ai appelé un hack :) – Sec