Ich habe schon eine Weile damit rumgespielt, dass das funktioniert, und ich vermute, dass ein grundlegendes Missverständnis darüber, wie Pipes funktionieren, die Ursache für meine Probleme ist.
Mein Ziel ist es, eine TCP-Verbindung zu einem Remote-Host über zu initiieren netcat
und zwei Named Pipes im Dateisystem zu haben: Eine, von der Prozesse lesen können, um eingehende Daten abzurufen, und eine, auf die Prozesse schreiben können, dienen als ausgehende Daten. Ich benutze derzeit die folgende Konstruktion:
mkfifo in
mkfifo out
cat out | netcat foo.bar.org 4000 > in &
Von hier aus möchte ich anderen Prozessen erlauben, auf diese offene TCP-Verbindung zu lesen und zu schreiben. Sollte dies "nur funktionieren", oder gibt es einen Grund, warum ein Konstrukt wie dieses nicht funktionieren kann?
Momentan scheint es so zu sein, dass ich out
ohne Probleme lesen kann , aber wenn ich schreibe, in
erhalte ich eine Ausgabe, in der eine kaputte Pipe erwähnt wird, und die gesamte nachfolgende Kommunikation scheint tot zu sein. Gedanken?
(Verwandte: Ich habe ursprünglich verwendet:
netcat foo.bar.org 4000 < out > in &
fand es aber zu blockieren warten auf eingabe. Ich bin auch neugierig, aber es wird wahrscheinlich besser in einer separaten Frage angesprochen.)
write(stdout): Broken pipe
nach (oder kurz danach) Schreiben an dieout
Pipe.