Linux, Perl und Pipe
Guten Morgen allerseits, in einem Perl-Skript verwende ich u.a. Zeilen dieser Art: open FTP, "| ftp -i -n -v -p $remoteHost"; sleep 5; print FTP "user $user $pass\n"; sleep 5; ... _Ohne_ die sleep-Befehle nach jeder Inanspruchnahme der Pipe werden die Daten offenbar viel zu schnell aufeinanderfolgend durch die Pipe durchgepresst, so daß es seitens des FTP-Programmes entsprechende Fehlermeldungen hagelt. _Mit_ sleep dagegen klappt es einwandfrei. Jetzt möchte ich gerne wissen: Wieso? Bisher bin ich immer davon ausgegangen: 1.) Es können nur soviel Daten in eine Pipe reingeschrieben werden, wie vom Empfängerprogramm entgegengenommen werden. D.h. die Datenquelle "wartet" mit neuen Daten solange bis die Daten am Ziel-Ende abgeholt sind. 2.) Ein Programm nimmt nur soviele Daten aus einer Pipe wie es auch verarbeiten kann. Welche Annahme ist nun falsch? Viele Grüße, Ralph (Suse 9.0 mit lukemftp-1.5) -- Weitersagen: GMX DSL-Flatrates mit Tempo-Garantie! Ab 4,99 Euro/Monat: http://www.gmx.net/de/go/dsl
#!/usr/bin/perl use Net::FTP; $ftp = Net::FTP->new ("192.168.1.3"); $ftp->login ('user','pwd'); $ftp->type ('I'); $ftp->get ($ARGV[0]); $ftp->quit; so geht z. B. es einfacher Robert
Guten Morgen allerseits,
in einem Perl-Skript verwende ich u.a. Zeilen dieser Art: open FTP, "| ftp -i -n -v -p $remoteHost"; sleep 5; print FTP "user $user $pass\n"; sleep 5; ...
_Ohne_ die sleep-Befehle nach jeder Inanspruchnahme der Pipe werden die Daten offenbar viel zu schnell aufeinanderfolgend durch die Pipe durchgepresst, so daß es seitens des FTP-Programmes entsprechende Fehlermeldungen hagelt. _Mit_ sleep dagegen klappt es einwandfrei.
Jetzt möchte ich gerne wissen: Wieso?
Bisher bin ich immer davon ausgegangen:
1.) Es können nur soviel Daten in eine Pipe reingeschrieben werden, wie vom Empfängerprogramm entgegengenommen werden. D.h. die Datenquelle "wartet" mit neuen Daten solange bis die Daten am Ziel-Ende abgeholt sind.
2.) Ein Programm nimmt nur soviele Daten aus einer Pipe wie es auch verarbeiten kann.
Welche Annahme ist nun falsch?
Viele Grüße, Ralph (Suse 9.0 mit lukemftp-1.5)
-- Weitersagen: GMX DSL-Flatrates mit Tempo-Garantie! Ab 4,99 Euro/Monat: http://www.gmx.net/de/go/dsl
___________________________________________________________ Gesendet von Yahoo! Mail - Jetzt mit 1GB Speicher kostenlos - Hier anmelden: http://mail.yahoo.de
participants (2)
-
Ralph Mueller
-
Robert Jenni