Signals are the simplest form of interprocess communication in the POSIX world. They allow a process to be asynchronously interrupted by another process (or by the kernel) to handle some event. Once the signal has been handled, the interrupted process resumes from the point of interruption. Signals are used for tasks such as terminating processes and telling daemons to reread their configuration file.
Signals have always been an integral part of Unix. The kernel uses them to inform a process of a variety of events, including:
The death of one of the process’s children.
An alarm set by the process has expired.
The size of the terminal window has changed.
All of these messages share an important property: They are all asynchronous. ...