Ecrire à stdin d'un processus en cours en utilisant un tube

8

Je suis dans une situation similaire à celle de ce post, mais je ne peux pas obtenir la solution fournie pour travailler dans ma situation car la réponse semble liée à cette question uniquement.

En particulier, je ne pouvais pas comprendre quel était le but de

cat my.fifo | nc remotehost.tld 10000

Dans mon cas, j'ai un processus en cours d'exécution et en attente d'entrée. comment envoyer une entrée à ce processus en utilisant des canaux nommés?

Je l'ai essayé echo 'h' > /proc/PID/fd/0affiche juste «h» sur la fenêtre de processus.

aditya
la source

Réponses:

13

Ignorez simplement les lignes contenant nc, l'OP dans ces questions veut l'utiliser pour transférer des données sur le réseau via nc.

Cela vous laisse avec:

mkfifo yourfifo
cat > yourfifo &
mypid=$!
yourprogram < yourfifo

Vous pouvez maintenant envoyer des données à votre programme avec

echo "Hello World" > yourfifo

Si vous avez terminé, arrêtez votre programme, exécutez la commande kill $mypidpour vous débarrasser du processus factice pour garder le FIFO ouvert et rm yourfifopour vous débarrasser du canal nommé.

Sven
la source
2
que cat > yourfifo &fait-on?
Alexander Mills