Scrivi a stdin di un processo in esecuzione usando pipe


8

Mi trovo in una situazione simile a quella di questo post, ma non riesco a trovare la soluzione fornita lì per funzionare nella mia situazione in quanto la risposta sembra legata solo a quella domanda.

In particolare, non riuscivo a capire quale fosse lo scopo

cat my.fifo | nc remotehost.tld 10000

Nel mio caso, ho un processo in esecuzione e in attesa di input. come posso inviare input a quel processo usando named pipe?

Ho provato echo 'h' > /proc/PID/fd/0che visualizza solo 'h' sulla finestra del processo '.

Risposte:


13

Basta ignorare le righe contenenti nc, l'OP in queste domande vuole usarlo per trasferire i dati attraverso la rete nc.

Questo ti lascia con:

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

Ora puoi inviare i dati al tuo programma con

echo "Hello World" > yourfifo

Se hai finito, termina il programma, emetti il ​​comando kill $mypidper sbarazzarti del processo fittizio per mantenere aperto il FIFO e rm yourfifoper sbarazzarti della pipa denominata.


2
cosa sta cat > yourfifo &facendo
Alexander Mills,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.