About
In an OS, the program are entities and they communicate with the Signals principle.
They are considered an (Linux) inter-process communication mechanism.
They are used to signal asynchronous events to one or more processes.
A signal could be generated:
- by a keyboard interrupt
- by an error condition.
- as job control commands to child processes
Articles Related
Type | Mean of Communication between |
---|---|
Interrupts | the CPU and the OS kernel |
Signals | the OS kernel and OS processes |
Signals may be initiated by:
- the OS kernel (e.g: SIGFPE, SIGSEGV, SIGIO),
- or by a process(kill()).
They are eventually managed by the OS kernel, which delivers them to the target thread/process, invoking either:
- a generic action (ignore, terminate, terminate and dump core)
- or a process-provided signal handler.
Hardware interrupts can generate signals, like a keyboard interrupt generates SIGINT. Thus interrupts and signals are closely tied to each other.
Number | Name | Description |
---|---|---|
11 | SIGSEGV | segmentation fault |
SIGINT | ||
SIGTERM | (generated with the kill command | |
SIGINFO | ask for info (generated, for example, by typing the status character, typically control-T, although on some platforms, such as Mac OS X, the status character is not set by default, so you must set it with stty(1) in order to use it) | |
SIGUSR1 | a little bit the same meaning than SIGINFO |
Management
List
kill -l
Example
# Handle shutdowns
function gracefulshutdown {
shutdown.sh
}
trap gracefulshutdown SIGINT
trap gracefulshutdown SIGTERM
trap gracefulshutdown SIGKILL
Trap
See trap
Example: calling the exit function, the following finish function will run.
#!/bin/bash
function finish {
# Your cleanup code here
}
trap finish EXIT