Christian Kruse: Killt ein Klick auf Stopp-Button ein CGI-Script?

Beitrag lesen

Hoi,

exit 0; # (2)

Tss, Fussnote 2 hab ich doch glatt vergessen...

Also:

(2) Hier wird der Haupt-Prozess beendet. Ein fork() musst du dir so
    vorstellen:

Mutter-Prozess
   beliebiger Code
   .
   .
   .
   fork()

ab hier sind aus dem Mutter-Prozess zwei Prozesse geworden: Parent-
und Child-Prozess. Beide(!!) fuehren erstmal grundsaetzlich denselben
Code aus, der Kind-Prozess ist lediglich eine komplette Kopie des
Mutter-Prozesses. Das muss der Programmierer abfangen. Dazu muss man
wissen, dass $pid im Mutter-Prozess die PID (Prozess-ID) des Kindes
enthaelt und der Child-Prozess 0 enthaelt.

Wichtig zu fork zu wissen waere vielleicht noch, dass du im
Haupt-Prozess (sofern du nicht mit setsid() einen neuen Haupt-Prozess
machst) auf den Kind-Prozess warten solltest (per wait()), weil du
sonst Zombies erzeugen kannst. Zombies sind Prozesse, die im Grunde
schon beendet sind: sie belegen keinerlei Ressourcen mehr, koennen
sich aber auch nicht endgueltig beenden, weil ihnen das OK vom
Kernel dazu fehlt.

Gruesse,
 CK