linux-l: Zombies

Wolfgang Jung woju at drawbridge.in-berlin.de
Do Feb 5 09:18:39 CET 1998


On Thu, Feb 05, 1998 at 08:26:47AM +0100, Carsten Paeth wrote: 
> > 
> > Hallo liebe Pinguine, hallo liebe Linux-fans,
> > 
> > ein schwerwiegendes Problem tritt immer wieder aus dem
> > Nichts, aus der Dunkelheit der Zeit, aus der K=E4lte des
> > Raumes, aus der unendlichen Weite des Unm=F6glichen,
> > aus der Windows95-Welt in den Adressraum meines
> > Linux-Rechners -> ZOMBIES!
> > 
> > Wie beseitigt man Zombie-Prozesse? Kann man Zombies =FCberhaupt
> > richtig t=F6ten, wenn sie schon tod sind?
> 
> Der Vater muß sie zur Ruhe betten, indem er eine wait/wait3/wait4
> aufruft.
> 
> > 
> > Wie entstehen Zombie-Prozesse?
> 
> Der Vater kümmert sich nicht richtig um seine Kinder.
> Der Vater kann auch mit signal(3) die Behandlung von sterbende
> Kindern ändern:
> signal(SIGCHLD, function)	- function wird aufgerufen, wenn ein
>                                   Kind stirbt.
> signal(SIGCHLD, SIG_DFL)	- Vater muß wait ausführen, damit
>                                   die Kinder nicht zu Zombies werden.
> signal(SIGCHLD, SIG_IGN)	- Kinder könnnen auch ohne Vater sterben.

Abholen muss der Vater seine nachkommen alle "erloesen" dazu muss der
Vater (Mutter :) ) sein Kind mit wait erloesen.
Ein Terminierter Prozess wird IMMER zum Zombie bis ihn sein Vater 
mit wait erloest.
Sollte der Vater vor dem Kind terminieren uebernimmt diese Aufgabe der
INIT Prozess (er odoptioert verwaiste Kinder)

Sollten also nach dem Tod des Vaters immer noch zombies bleiben,
dann hat der Kern wohl ein Problem, bzw der INIT ist am haengen.

letzendlich muss fuer jeden Terminierten Prozess ein wait* derivat aufgerufen
werden.


-- 




Mehr Informationen über die Mailingliste linux-l