Linux, Perl und Pipe
"Ralph Mueller" <[email protected]>
| Newsgroups | gmane.linux.suse.programming |
|---|---|
| Message-ID | <[email protected]> |
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
--
Um die Liste abzubestellen, schicken Sie eine Mail an:
[email protected]
Um eine Liste aller verfügbaren Kommandos zu bekommen, schicken
Sie eine Mail an: [email protected]