At least in Linux, signal handlers themselves are inherited, but not waiting for a signal.
Quoting Linux fork(2) man page :
fork () creates a child process that differs from the parent process only in its PID and PPID, and that the resource value is set to 0. File locks and pending signals are not inherited.
This makes sense because the signals are related to the (parent) process. A newly created process (basically) is a copy of the current process, so the signal handlers are saved.
Although this is not directly related, a call to the exec() , which often follows fork() , will destroy all signal handlers as a new new executable is loaded into the process (overwriting the functions that currently handle the signals).
source share