Morris: Webserver wartet auf Scriptende

Beitrag lesen

Hallo Bio!
Danke für die schnelle Antwort.

Wenn ich mich nicht irre, sind Parent und Child identisch, nur File-Locks und Signale des Eltern-Prozesses werden nicht an das Kind vererbt. File-Handles also anscheinend schon. Das könnte der Grund sein, dass der Web-Server wartet, denn er merkt wahrscheinlich gar nicht, dass der Eltern-Prozess Suizid begeht, wenn das Kind die File-Handles noch offen hält.

Ich hatte gehofft, daß der Webserver (anhand der PID o.ä.) auf das Ende des Prozesses wartet, nicht aber auf das Ende von Kindprozessen. Aber das scheint nicht der Fall zu sein.

Du musst also höchstwahrscheinlich noch irgendwas machen - z.B. das Kind die File-Handles schließen lassen.

Das Problem ist, daß das Skript ja an STDOUT schreibt, und das wird an den Browser geschickt. Ich habe sogar schon ein
close(STDOUT);
versucht, aber das war eher eine Verzweiflungstat und hat auch nicht funktioniert. Auch ein
open(TRASH, '>', '/dev/null');
select(TRASH);
bringt nichts, ebensowenig wie eine shell-Ausgabeumleitung an /dev/null innerhalb der exec-Anweisung.

Woher sollen Webserver und Browser auch wissen, ob noch etwas an STDOUT kommt oder nicht? Irgendwie muß ich den Webserver dazu bringen, die Verbindung zu beenden, aber mir ist nicht klar, worauf er eigentlich wartet.

Viele Grüße
Morris