A signal handler should not reassert its desire to handle its own signal. This is often done on non-persistent platforms, that is, platforms that, upon receiving a signal, unbind the signal to default behavior before calling the bound signal handler. See SIG01-AC. Understand implementation-specific details regarding signal handler persistence.
A signal handler may only call signal()
if it does not need to be asynchronous-safe (in other words, all relevant signals are masked, and consequently it may not be interrupted.)
...