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.

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.


2
o que esta cat > yourfifo &fazendo
Alexander Mills
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.