Thread flush unter windows (9 answers)
Opened by jan99 at 2011-05-31 16:45

Linuxer
 2011-05-31 17:28
#149317 #149317
User since
2006-01-27
3888 articles
HausmeisterIn

user image
Ja, jedenfalls für mich, um zu sehen, was konkret Du meinst.

Allgemein:

Perls Ausgabe erfolgt in der Regel gepuffert.
Entweder man weist Perl an, diese Pufferung nicht durchzuführen, oder man fordert die Leerung jeweils explizit an.

Durch das Setzen von $| auf einen Wert ungleich 0 wird Perl angewiesen, den Puffer sofort zu leeren.
Dabei ist zu beachten, dass diese Anweisung für den aktuellen ausgewählten Ausgabekanal gilt;
Standardmäßig ist das STDOUT, kann aber eben auch ein anderer sein. Man sollte sich dieser Tatsache bewusst sein.

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
{ 
local $| = 1;

for ( 1 .. 3 ) {
# nach jedem Punkt sollte eine Sekunde vergehen
print ".";
sleep 1;
}

print "\n";
}


Das Modul IO::Handle stellt flush() zur Verfügung, mit dem man die sofortige Leerung des Puffers für einen definierten Filehandle anweisen kann. Die weiteren Details sind bitte der POD zu entnehmen.


Zu Deinem Problem:

Ich kann gerade nicht nachvollziehen, wo Dein Problem konkret ist. Allerdings bin ich irritiert aufgrund Deines Codes.

Du hängst die abgeholten Daten an eine leere $result_content an und gibst diesen anschließend wieder
als Argument an die content() Methode des HTTP::Request Objekt in $result.
Warum?

Des weiteren schreibst Du "Im Anschluss ..."
Heißt das, dass Dein Perl-Skript komplett durchgelaufen ist und dann das Java-Tool startet?
Wenn ja, sehe ich derzeit kein Problem im Perl-Puffer ... Das Perl-Skript ist zu Ende und damit müssen auch alle Perl-internen Puffer geleert worden sein.



Last edited: 2011-05-31 21:42:31 +0200 (CEST)
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!

View full thread flush unter windows