Skip site navigation (1)Skip section navigation (2)
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>