Perl-Script startet externe Anwendung - Prozess stoppt nicht

06/10/2009 - 20:30 von Dominik Pusch | Report spam
Hallo,
ich habe ein kleines Perl script geschrieben, dass eine externe
Anwendung startet, welches wiederrum je nach Übergabeparameter
allerlei Dinge nach stdout zeilenweise Ausgeben kann (z.B. die Zahl Pi
berechnet) und in vielen Fàllen niemals oder nach sehr langer Zeit
endet:

open(PROGRAMM, "/usr/bin/programm -a $uebergabeparameter |") ||
die "Problem mit Programm aufgetreten: $!";

while (<PROGRAMM>)

{
print "$_<BR>";
}
close (PROGRAMM) || die "Kann Programm nicht beenden: $!";


Im Browser werden die Ausgaben zeilenweise angezeigt. Soweit so gut.
Nur wenn ich den Browser schließe, bzw. den Stop-Button des Browsers
klicke, so làuft der PROGRAMM-Prozess im Hintergrund weiter.
Kann man das Perl-Script irgendwie so anpassen, dass bei Abbruch der
http-Verbindung auch der externe Prozess gekillt wird?

TIA,
Dominik
 

Lesen sie die antworten

#1 Frank Seitz
08/10/2009 - 15:06 | Warnen spam
Dominik Pusch wrote:

ich habe ein kleines Perl script geschrieben, dass eine externe
Anwendung startet, welches wiederrum je nach Übergabeparameter
allerlei Dinge nach stdout zeilenweise Ausgeben kann (z.B. die Zahl Pi
berechnet) und in vielen Fàllen niemals oder nach sehr langer Zeit
endet:

open(PROGRAMM, "/usr/bin/programm -a $uebergabeparameter |") ||
die "Problem mit Programm aufgetreten: $!";

while (<PROGRAMM>)

{
print "$_<BR>";
}
close (PROGRAMM) || die "Kann Programm nicht beenden: $!";


Im Browser werden die Ausgaben zeilenweise angezeigt. Soweit so gut.
Nur wenn ich den Browser schließe, bzw. den Stop-Button des Browsers
klicke, so làuft der PROGRAMM-Prozess im Hintergrund weiter.
Kann man das Perl-Script irgendwie so anpassen, dass bei Abbruch der
http-Verbindung auch der externe Prozess gekillt wird?



Der PROGRAMM-Prozess làuft so lange weiter bis er fertig ist
oder er nichts mehr auf die Pipe schreiben kann, weil sein Parent weg ist,
oder sein Parent ihn killt.

Der Parent muss das also steuern, indem er prüft, ob die
Browserverbindung noch da ist.

Grüße
Frank
Dipl.-Inform. Frank Seitz
Anwendungen für Ihr Internet und Intranet
Tel: 04103/180301; Fax: -02; Industriestr. 31, 22880 Wedel

Homepage: http://www.fseitz.de/
XING-Profil: http://www.xing.com/profile/Frank_Seitz2

Ähnliche fragen