Re: Wie kille ich Prozesse mit Status "defunct"
Nils Philippsen <[email protected]> Fri, 04 Mar 2005 17:49:42 +0100
| Newsgroups | gmane.linux.redhat.general.german |
|---|---|
| Organization | Red Hat GmbH |
| Message-ID | <[email protected]> |
On Thu, 2005-03-03 at 09:58 +0100, Martin Schmiderer wrote:
> Hallo Werner,
>
> >
> > Hallo Martin,
> >
> > danke für den Exkurs und die fundierte Info. Diese Zusammenhänge waren mir
> > bisher nicht so klar.
>
> immer gerne :)
>
> > Es _SIND_ viele Zombies, sogar sehr viele! Könnte es sein, daß Jörg mit seiner
> > Vermutung recht hat, daß die Thread-Library einen Knacks hat? Schließlich ist
> > es unwahrscheinlich, daß plötzlich recht viele Programme nicht mehr auf ihre
> > Kinder aufpassen, oder?
>
> Da bin ich mir nicht so sicher... denn wait() und konsorten sind aus der NPTL, und
> wenn die einen Knacks hat, hm?
wait() ist nicht aus der NPTL, weil es prinzipiell nichts mit threading
zu tun hat. Prinzipiell läuft das ganze so ab:
1. Elternprozess generiert Kindprozess (fork())
2. Kindprozess macht irgendwas
[...]
n-2. Kindrozess beendet sich/stirbt
n-1. Elternprozess bekommt SIGCHLD
n. Elternprozess ruft wait() oder waitpid() um den toten Kindprozess
(Zombie) zu "beerdigen" ;-)
Wenn nun Threading-Anwendungen eine Menge Zombies erzeugen, wird es sich
wohl um LinuxThreads (und nicht NPTL) handeln, denn nur dort haben die
Threads eigene PIDs.
Ciao,
Nils
--
Nils Philippsen / Red Hat / [email protected]
"They that can give up essential liberty to obtain a little temporary
safety deserve neither liberty nor safety." -- B. Franklin, 1759
PGP fingerprint: C4A8 9474 5C4C ADE3 2B8F 656D 47D8 9B65 6951 3011