Estou mexendo nisso há algum tempo, então suspeito que algum tipo de mal-entendido fundamental sobre como os tubos funcionam é a causa raiz dos meus problemas.
Meu objetivo é iniciar uma conexão TCP com algum host remoto via netcat
e ter dois pipes nomeados no sistema de arquivos: um que os processos podem ler para obter dados recebidos e outro que os processos podem gravar para servir como dados de saída. Atualmente, estou usando a seguinte construção:
mkfifo in
mkfifo out
cat out | netcat foo.bar.org 4000 > in &
A partir daqui, gostaria de permitir que outros processos leiam e gravem para / a partir dessa conexão TCP aberta. Isso deveria "funcionar" ou existe uma razão pela qual uma construção como essa não pode funcionar?
O que parece acontecer no momento é que eu posso ler out
sem problemas, mas quando escrevo in
, recebo uma saída mencionando um cano quebrado e toda a comunicação subsequente parece estar morta. Pensamentos?
(Relacionado: Eu originalmente usei:
netcat foo.bar.org 4000 < out > in &
mas o encontrou bloqueando a espera pela entrada. Também estou curioso sobre isso, mas provavelmente será melhor abordado em uma pergunta separada.)
write(stdout): Broken pipe
depois (ou logo depois) da gravação noout
pipe.