Date: Fri, 14 Aug 2020 20:01:18 +0200 From: Edgar =?iso-8859-1?B?RnXf?= <e...@math.uni-bonn.de> Message-ID: <20200814180117.gq61...@trav.math.uni-bonn.de>
| 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. 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. kre