A signal handler should not reassert its desire to handle its own signal. This is often done on nonpersistent platforms—that is, platforms that, upon receiving a signal, reset the handler for the signal to SIG_DFL before calling the bound signal handler. Calling signal()
under these conditions presents a race condition. (see See SIG01-C. Understand implementation-specific details regarding signal handler persistence.).
A signal handler may call signal()
only if it does not need to be asynchronous-safe (that is, if all relevant signals are masked so that the handler cannot be interrupted).
...