From: Christian Leber (christian_at_leber.de)
Date: 27. Apr 2000
Raphael Becker schrieb:
>Hmm, ich habs grad nochmal "lokal" getestet, d.h. ohne jegliche
>netcats.
>(tar cv News/ )| (cd test2/; tar xv)
>Das funktiniert soweit, d.h. beide Prozesse terminieren.
>Frage: wieso funktioniert obiger Konstrukt überhaupt? Wird der Teil
>nach dem "|" unmittelbar nach dem starten des Teils vor dem "|"
>gestartet oder werden die Daten irgendwie "zwischengespeichert"?
Wie das deine Shell genau macht, weiss ich nicht, aber es gibt einen buffer,
der liegt afair defaultmaessig bei 4 kb, im Prinzip sollte es aber egal sein
in welcher Reihenfolge die Prozesse gestartet werden, das ganze wird wohl
ueber pseudo terminals funktionieren.
Wie man diese groesse aendert... keinen Schimmer(also in der Shell, in
Programmen mit setbuf(3)), das Problem wird aber eh ein anderes sein,
naemlich, dass sich netcat wohl nicht beendet.
(dazu: APUE Chapter 14.4 und 19)
Fuer solche zwecke(ueber´s Netz pipen) gibt es aber auch kleine tools, wie
inout oder so, sowas
kann man aber auch recht einfach selbst schreiben(schaetzungsweise 15-30
zeilen C pro Seite).
Imho gibt es aber noch eine andere Moeglichkeit, naemlich dass, das zeug auf
rechner 1 in einer extra shell laeuft, die man von einem skript aus startet,
dann speichert man die pid und lauscht auf nem anderen port, wenn dann
netcat auf rechner2 terminiert, schickt man mit einem netcat das man nach
wenigen sekunden einfach so kill ein signal an das 2te netcat auf rechner 1
das wiederrum die shell kill von der man die pid gespeichert hat...
oder so, aber wie es aussieht hab ich lauter Schrott geschrieben, man sollte
zuerst lesen und dann sich Unfug ausdenken ;-))
man nc bzw. man netcat
-q seconds Quit after EOF is detected on stdin and after a delay. "-q 0"
makes "nc" quit as soon as EOF is detected
(im tar paket ist btw auch was fuer backups uebers netz)
Gruss
Christian Leber
Dieses Archiv wurde generiert von hypermail 2.1.2 : 11. Mar 2002 CET