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>