Grava no stdin de um processo em execução usando pipe

8

Estou em uma situação semelhante à deste post, mas não consegui que a solução fornecida lá funcionasse na minha situação, pois a resposta parece relacionada apenas a essa pergunta.

Em particular, eu não conseguia entender qual era o objetivo de

cat my.fifo | nc remotehost.tld 10000

No meu caso, tenho um processo em execução e aguardando entrada. como posso enviar entrada para esse processo usando pipes nomeados?

Eu tentei echo 'h' > /proc/PID/fd/0apenas exibe 'h' na janela do processo.

aditya
fonte

Respostas:

13

Apenas ignore as linhas que contêm nc, o OP nestas perguntas deseja usá-lo para transferir dados pela rede via nc.

Isso deixa você com:

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

Agora você pode enviar dados para o seu programa com

echo "Hello World" > yourfifo

Se você tiver terminado, encerre seu programa, emita o comando kill $mypidpara se livrar do processo fictício para manter o FIFO aberto e rm yourfifose livrar do canal nomeado.

Sven
fonte
2
o que esta cat > yourfifo &fazendo
Alexander Mills