CGI Programm

Georg Zetzsche georg.zetzsche at t-online.de
Son Mar 18 23:40:53 CET 2001


Hallo zusammen !
Ich versuche gerade ein CGI Perl Skript zu schreiben, das ein anderes
Programm aufrufen und sich dann beenden soll. Eigentlich ganz
einfach. Nur leider ist dabei ein Problem aufgetreten. Wenn das
Programm per system() aufgerufen wird, wartet der Browser bis zum St.
Nimmerleinstag (bzw. bis der pppd beendet wird: das gestartete
Programm ist der pppd, bzw. pon) auf die Beendigung der
Übertragung der Seite. Das brachte mich auf die Idee das CGI Programm
mal von einem Terminal aus aufzurufen, aber dort funktionierte es und
beendete sich ordnungsgemäß nach dem Starten des zu startenden
Programms. 

Jetzt ist meine Frage:  Wie kann ich einen Daemon von einem CGI-Programm 
aus starten ?


Ich habe auch schon überlegt, ob es daran liegen könnte, dass der
system()-Aufruf (der ja intern als fork() und exec() realisiert wird)
durch das Gabeln die Deskriptoren an den Child-Prozess vererbt und
dadurch die Verbindung zum Browser irgendwie noch gehalten wird (das
ist ja eigentlich auch nur ein Deskriptor, der auf einen Socket
zeigt), obwohl sich der Vater-Prozess (das CGI-Programm) schon lange
beendet hat. Wenn das die richtige Antwort ist, wie schließe ich dann
die Deskriptoren zum Socket beim Kind ?  Ein close auf stdin, stdout und 
stderr hat nichts gebracht. 

Das CGI ist übrigens in Perl geschrieben und läuft über den thttpd
(dieses Problem hatte ich allerdings auch schon mit dem Apache).

-- 
Georg Zetzsche <georg.zetzsche at t-online.de>


-- 
tlug Mailingliste
liste at tlug.de
http://schwarz.thueday.de/mailman/listinfo/tlug_allgemein