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
Da stimmt was nicht. Meines wissens killt apache seine childs nicht.
> Laut meine Infos, sollte aber jedem verwaisten Prozess immer (von
> init?) ein SIGHUP gesendet werden?
Das stimmt definitiv nicht. Der parent wird unterrichtet (SIGCHLD), wenn
sein child stirbt, aber nicht umgekehrt. Das mit dem SIGHUP macht
eine Login-Shell, aber kein normaler Prozess.
> Aber auch das passiert nicht!
Was daher richtig ist.
> Wenn ich meinem verwaisten Programm manuell ein SIGHUP sende, terminiert es
> nᅵmlich auch!
Ja, was sonst.
> Aber zurᅵck zu Deiner Ausage: Der parent von meinem script.pl ist ja
> apache. Dieser terminiert script.pl ja auch ordnungsgemᅵᅵ, wenn die
> Browserverbindung abreiᅵt. Nur script.pl terminiert dabei nicht
> programm!
> Aber zurᅵck zur Ausgangsfrage: Kann man ein cgi-Perlscript irgendwo so
> gestalten (eine zusᅵtzlich Anweisung oder ᅵhnliches?), dass wenn es
> ein entsprechende KILL-Signal von apache bekommt, auch ein kill-Signal
> an seine Kinder weiterleitet, bevor es sich entgᅵltig terminiert?
Wenn dem so ist, dass apache seinem CGI-child ein Signal schickt
(was ich nicht glaube), kᅵnntest du dies mit einem
Signalhandler erreichen.
Grᅵᅵe
Frank Seitz
Der Kernel schickt dem Prozess ein SIGPIPE, wenn dieser auf
eine geschlossene Pipe oder einen geschlossenen Socket schreibt.
Daraufhin terminiert der Prozess (sofern er das Signal nicht
besonders behandelt).
Grᅵᅵe
Frank