C signal handling

A signal can report some exceptional behavior within the program (such as division by zero), or a signal can report some asynchronous event outside the program (such as someone striking an interactive attention key on a keyboard).

For example, Unix and Unix-like operating systems (such as Linux) define more than 15 additional signals; see Unix signal.

raise() sends a signal to the current process, kill() sends a signal to a specific process.

The target environment suspends execution of the program until the signal handler returns or calls longjmp().

The behavior of signal() has been changed multiple times across history and its use is discouraged.