More About Processes

It is possible to monitor processes and to “ask” them to terminate, to pause, to continue, etc. To understand the operations we are going to perform here, it is helpful to know a bit more about processes.

The Process Tree

As with files, all processes that run on a GNU/Linux system are organized in the form of a tree. The root of this tree is init. Each process has a number (its PID, Process ID), together with the number of its parent process (PPID, Parent Process ID). The PID of init is 1, and so is its PPID: init is its own father.

Signals

Every process in UNIX can react to signals sent to it. There are 64 different signals which are identified either by their number (starting from 1) or by their symbolic names (SIGx, where x is the signal's name). The 32 “higher” signals (33 to 64) are real-time signals and are out of the scope of this chapter. For each of these signals, the process can define its own behavior, except for two signals: signal number 9 (KILL) and number 19 (STOP).

Signal 9 terminates a process irrevocably without giving it the time to terminate properly. This is the signal you send to a process which is stuck or exhibits other problems. A full list of signals is available using the kill -l command.