objectif
Dialoguer en asynchrone avec une commande (client/serveur simple) directement depuis bash.
code minimal
# lancer bc en coproc et lui parler
coproc CALC { bc -l; }
echo '1/3' >&"${CALC[1]}"
read -r out <&"${CALC[0]}"
printf 'résultat: %s\n' "$out"
utilisation
# envoyer plusieurs commandes puis fermer l'entrée
printf 's(1)\nscale=5; 22/7\n' >&"${CALC[1]}"
exec {CALC[1]}>&- # ferme l'entrée
variante(s) utile(s)
# serveur netcat simple et dialogue
coproc NC { nc -l 127.0.0.1 9000; }
echo "ping" >&"${NC[1]}"
read -r line <&"${NC[0]}"; echo "got: $line"
notes
coproc name { cmd; }crée des FDs${name[0]}(lecture) et${name[1]}(écriture).- ferme les FDs quand fini pour éviter les blocages.