> void > sigchld(int unused) > { > + if (signal(SIGCHLD, sigchld) == SIG_ERR) > + die("can't install SIGCHLD handler:"); > while (0 < waitpid(-1, NULL, WNOHANG)); > }
Calling `die` inside a signhandler is still an issue and can produce bad behavior (I have seen a couple software which randomly freeze due to calling signal unsafe functions inside a sighandler). If `sigaction` can fix the issue with `signal` then it's probably best to use that. Otherwise replacing `die` with `write` and `_exit` is also a viable solution as shown in: https://lists.suckless.org/hackers/2207/18405.html - NRK