Dies ist ein einfacher Echoserver unter Unix, der nc verwendet:
mkfifo fifo
cat fifo | nc -k -l 4458 -v | cat >fifo
(basierend darauf )
Wie ich sehen kann, funktioniert der Datenfluss wie folgt:
fifo (my named pipe)
|
| (using cat)
|
v
nc
|
| (using cat)
|
v
fifo
Und hier ist die Frage: Warum funktioniert das nicht?
nc -k -l 4458 -v >fifo <fifo
Sie werden feststellen , dass , wenn Sie versuchen , telnet
zu localhost
auf 4458
Sie ein „Connection refused“ Fehler erhalten.
cat myfifo | nc -k -l 4458 > myfifo
funktioniert auch. Wenn Sie eine Textdatei verwenden, file.txt wienc -k -l 4458 < file.txt > file.txt
folgt. Die erste Verbindung wird hergestellt und geschlossen (sinnvoll, da die Eingabe abgeschnitten wurde und EOF den Socket schließt). Die zweite Verbindung wird zu einem vergesslichen Echoserver: Sie gibt jede zweite Zeile wieder und speichern Sie die nicht aktivierten Zeilen in der Textdatei.