Date: Fri, 25 Aug 2000 08:58:28 -0400 From: "Yevmenkin, Maksim N, CSCIO" <myevmenkin@att.com> To: "'Alfred Perlstein'" <bright@wintelcom.net>, core-ix@hushmail.com Cc: freebsd-hackers@FreeBSD.ORG Subject: RE: Preventing zombies to occure Message-ID: <E598F159668DD311B9C700902799EAF44734E5@njb140po01.ems.att.com>
next in thread | raw e-mail | index | archive | help
> > I have some ideas to improve fork()-ing and getting rid of
> zombie processes.
> > This things mentioned here are proposed of a man that do
> not know very well
> > (author means 'the depths' of) BSD kernel source although
> he have some ex-
> > pirience with it (mainly in reading it :-).
> >
> > By definition zombie is a process entry in proc table that
> wasn't released
> > by wait*() called form the parent's code. So all we need to
> do is to ensure
> > that parent will call wait*() as many times as it called
> fork(). This meth-
> > od have some advantages but it has some disadvantages too.
> First of all,
> > we
> > provide programmers & all users with full out-of-zombies
> enviroment where
> > everything created will be destroyed in the right way.
> Second, proposed
> > me-
> > thod is easy to include in current source with minnor modifications.
> >
>
> [snip]
>
> If a parent that has zombie children exits the kernel will attach them
> to init (I haven't checked, but this is the common unix solution).
> init will be calling waitpid to clear zombies automagically.
>
> So this sorta already happens. :)
two ways:
first:
something like
SIGCHLD_handler(int)
{
while (waitpid(-1, NULL, 0))
;
}
you need to handle SIGCHLD, otherwise you will have zombies.
second:
use SA_NOCLDWAID flag in sigaction(2)
in this case ``init'' will be responsible for zombie process
thanks,
emax
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?E598F159668DD311B9C700902799EAF44734E5>
