child processes running in the foreground are largely responsible for dealing with signals from the user since they are in control of the terminal
processes in the background are less accessible to user signals: kill -SIGNALNAME pid instead of keyboard sequences
in more complex situations, the shell may have to help coordinate signals between processes
child processes inherit the signal mask from their parent process; if the parent process blocks signals, the children won't listen to those signals unless they are explicitly unblocked