On Tue, Jul 19, 2022 at 09:27:35AM +0200, Hiltjo Posthuma wrote: > On Tue, Jul 19, 2022 at 12:05:48AM +0200, François-Xavier Carton wrote: > > Technically, no standard guarantees that the handler stays after being > > called once. The implementation could reset it to the default action. > > One may want to re-add a call to signal here, without error checking, to > > ensure the handler remains in case SIGCHLD is raised multiple times. > > > > Do you have a reference of a description of this behaviour in an other system, > specification or standard? >
C89 (7.7.1.1), C99 (7.14.1.1), POSIX 2001 and 2008 all say that "the equivalent of signal(sig, SIG_DFL)" may be executed prior to executing the signal handler (but is not required as long as the signal is blocked until the handler has returned). As for implementations, my signal(2) man page says BSD and glibc systems do not reset the handler, but the linux syscall does, as well as "original UNIX systems" and System V. I've no idea what other libcs do.
