Why do shells ignore SIGINT and SIGQUIT in backgrounded processes? Why do shells ignore SIGINT and SIGQUIT in backgrounded processes? unix unix

Why do shells ignore SIGINT and SIGQUIT in backgrounded processes?


When a shell runs a program in the background, the background process is not supposed to be tied to the original shell any more -- the shell can exit or be killed, and the background process should continue running.

If the shell is interactive and job control is being used, it puts the background process in a separate process group, so signals sent to the shell process group don't affect it.

But when job control is not being used, which is the default in non-interactive shells, the background process is in the same process group. To avoid the background process receiving keyboard signals that are just intended for the shell, it apparently ignores those signals in those child processes.