*BSD News Article 79448


Return to BSD News archive

Path: euryale.cc.adfa.oz.au!newshost.carno.net.au!harbinger.cc.monash.edu.au!nntp.coast.net!www.nntp.primenet.com!nntp.primenet.com!howland.erols.net!EU.net!uunet!in1.uu.net!fu-berlin.de!irz401!orion.sax.de!uriah.heep!news
From: j@uriah.heep.sax.de (J Wunsch)
Newsgroups: comp.unix.bsd.freebsd.misc
Subject: Re: What is a zombie?
Date: 28 Sep 1996 19:17:21 GMT
Organization: Private BSD site, Dresden
Lines: 33
Message-ID: <52jtk1$8s@uriah.heep.sax.de>
References: <52a5dt$qef@vixen.cso.uiuc.edu> <3249D8F7.2EA39DDA@lambert.org>
Reply-To: joerg_wunsch@uriah.heep.sax.de (Joerg Wunsch)
NNTP-Posting-Host: localhost.heep.sax.de
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
X-Newsreader: knews 0.9.6
X-Phone: +49-351-2012 669
X-PGP-Fingerprint: DC 47 E6 E4 FF A6 E9 8F  93 21 E0 7D F9 12 D6 4E

Terry Lambert <terry@lambert.org> wrote:

> Actually, it means the process has exited, but that its status
> has not been reaped by its parent process.  Typically, this
> happens when inexperienced programmers write code that calls
> fork, but doesn't call wait(2) or ignore SIGCHLD -- either of
> which will cause the zombie to exit.

Ignoring SIGCHLD won't help -- it is already ignored by default:


SIGNAL(3)                 FreeBSD Programmer's Manual                SIGNAL(3)

NAME
     signal - simplified software signal facilities

...
     Name              Default Action                      Description
     ...
     SIGCHLD         discard signal          child status has changed


Implementing SA_NOCLDWAIT for sa_flags in sigaction(2) would be the
way to go, but nobody has done this so far in FreeBSD.  So your only
chance is to actually install the d*mn signal handler, and have it
fetch the exit status of the child.

-- 
cheers, J"org

joerg_wunsch@uriah.heep.sax.de -- http://www.sax.de/~joerg/ -- NIC: JW11-RIPE
Never trust an operating system you don't have sources for. ;-)