38.9 Killing Foreground JobsYou probably know that typing CTRL-c ( 38.8 ) will terminate your foreground job. But what actually happens when you type CTRL-c?
When you type CTRL-c, you're sending the
INT (interrupt) signal (
38.8
)
to the foreground process. Most well-designed programs "catch" the
interrupt signal - which means that the program installs some special
function (a "signal handler") that is called whenever a signal
arrives. The signal handler normally closes all open files, resets
your terminal properly (if needed), and does anything else necessary
so that the program can depart from this world at peace. Then the
program terminates.
The QUIT signal, sent by CTRL- Of course, it's possible for the signal handler to do something else entirely: it's possible for the program to decide not to quit, or to implement some truly bizarre feature. In fact, editors like vi or Emacs almost always ignore most signals. The trap ( 44.12 ) command handles signals in the Bourne shell. Whenever you send a signal from the keyboard, it's sent to all processes in the same process group ( 38.3 ) . This may include the program's child processes, but may not. And, of course, child processes can choose to ignore signals on their own. But more often than not, killing the parent process kills its children. Article 5.9 explains how to set the key that sends these and other signals. The kill ( 38.10 ) command also sends signals. - , |
|