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