tech-kern archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: wait(2) and SIGCHLD
In article <5919.1597441925%jinx.noi.kre.to@localhost>,
Robert Elz <kre%munnari.OZ.AU@localhost> wrote:
> Date: Fri, 14 Aug 2020 20:01:18 +0200
> From: Edgar =?iso-8859-1?B?RnXf?= <ef%math.uni-bonn.de@localhost>
> Message-ID: <20200814180117.GQ61086%trav.math.uni-bonn.de@localhost>
>
> | 3. I don't see where POSIX defines or allows this, but given 2., I'm surely
> | missing something.
>
>It is specified to work this way in POSIX, though right now I don't
>have the time to go dig out exactly where.
>
>Setting SIGCHLD to SIG_IGN effectively means that you want to ignore
>your children - they then don't report any exit status to their parent,
>but simply vanish when they exit. Thus when the parent does a wait()
>it has no children, and gets ECHLD.
They don't vanish, they get reparented to init(8) which then wakes up
and reaps them.
>Leave (or set) SIGCHLD to SIG_DFL and you don't get signals, but child
>processes do report status to their parent. Catch SIGCHLD and you'll
>get signalled when a child exits (I'm not sure if NetBSD guarantees one
>signal delivery for each exited child or just a signal if there are
>some unspecified number of exited children).
>
>The actions on an ignored SIGCHLD is SysV inherited behaviour,
>Bell Labs (v7/32V) and CSRG BSD systems didn't act this way.
Yup, I edded this:
1.199 (christos 30-Mar-05): #define P_CLDSIGIGN 0x00080000 /* Process is ignoring SIGCHLD */
christos
Home |
Main Index |
Thread Index |
Old Index