Signal (Unix)
When using the Unix operating system , a signal is a system message to a running process . Signals are a primitive form of interprocess communication . Most signals also cause an action - usually ending the process. Others, however, are only used for information purposes (e.g. SIGWINCH) or can stop a process (SIGSTOP). There are also signals that can be freely used by the user (SIGUSR1 and SIGUSR2). Some signals can be intercepted or suppressed by the process. So catch z. B. some server programs (in Unix jargon " daemon ") SIGUSR1 or SIGUSR2 and then read in their configuration files again.
Common UNIX signals
The usual signals are listed below with their numbers. The supported signals and their values can differ from system to system. The POSIX.1 standard provides different numerical values depending on the hardware architecture used.
The prefix SIG is the short form of Signal.
The command kill -l
usually outputs all supported signal numbers with their associated names. The table below contains the following values as an example:
- Column A: GNU C Library
- Column B: Linux, Alpha and SPARC architectures
- Column C: Linux, x86 , AMD64 , ARM and most other processor architectures
- Column D: Linux, MIPS
signal | Values, synonym | Meaning | Meaning (translated) | Original usage, standards | |||
---|---|---|---|---|---|---|---|
A. | B. | C. | D. | ||||
SIGHUP | 1 | Hangup detected on controlling terminal or death of controlling process | Blocking of the control terminal or end of the control process . | POSIX (1990) | |||
SIGINT | 2 | Interrupt from keyboard; interactive attention signal. | Keyboard interrupt ; interactive warning signal. | C89 ; POSIX (1990) | |||
SIGQUIT | 3 | Quit from keyboard. | Exit through the keyboard. | ||||
SIGILL | 4th | Illegal instruction. | Invalid instruction. | C89; POSIX (1990) | |||
SIGTRAP | 5 | Trace / breakpoint trap. | Stop mark reached. | SUSv2 ; POSIX (2001) | |||
SIGABRT | 6th | Abnormal termination; abort signal from abort (3). | abnormal termination . | C89; POSIX (1990) | |||
SIGIOT | |||||||
SIGIOT | 6th | IOT trap; abort () on a PDP11. | 4.2BSD | ||||
SIGABRT | |||||||
SIGEMT | - | 7th | - | 7th | |||
SIGBUS | 10 | 10 | 7th | 10 | BUS error (bad memory access). | BUS error ( memory access error ). | 4.2BSD; SUSv2; POSIX (2001) |
SIGFPE | 8th | "Floating-point exception": erroneous arithmetic operation. | " Floating point operation exception error": incorrect arithmetic operation. | C89; POSIX (1990) | |||
SIGKILL | 9 | Kill, unblockable. | Unblockable exit. | POSIX (1990) | |||
SIGUSR1 | 30th | 30th | 10 | 16 | User-defined signal 1. | Custom signal 1. | POSIX |
SIGSEGV | 11 | "Segmentation violation": invalid memory reference. | " Protection Fault ": invalid memory reference. | C89; POSIX (1990) | |||
SIGUSR2 | 31 | 31 | 12 | 17th | User-defined signal 2. | Custom signal 2. | POSIX |
SIGPIPE | 13 | "Broken pipe": write to pipe with no readers. | "Broken pipe ": Writing to a pipe without a recipient. | POSIX (1990) | |||
SIGALRM | 14th | Alarm clock timer signal: alarm (2). | Alarm clock signal: Alarm (2). | POSIX (1990) | |||
SIGTERM | 15th | Termination request. | Termination request . | C89; POSIX (1990) | |||
SIGSTKFLT | - | - | 16 | - | Stack fault on coprocessor (unused). | Stack error on coprocessor (not used). | |
SIGCHLD | 20th | 20th | 17th | 18th | Child status has changed (stopped or terminated). | Child status has been changed (paused or terminated). | POSIX (1990) |
SIGCLD | |||||||
SIGCLD | 20th | - | - | - | Old System V name; child status has changed. | Old System V designation; Child status has been changed. | System V |
SIGCHLD | |||||||
SIGCONT | 19th | 19th | 18th | 25th | Continue stopped process. | Resume the paused process. | POSIX |
SIGSTOP | 17th | 17th | 19th | 23 | Stop process, unblockable. | Stop the process, unblockable. | POSIX |
SIGTSTP | 18th | 18th | 20th | 24 | Stop typed at keyboard. | Enter stop on the keyboard. | POSIX |
SIGTTIN | 21st | 21st | 21st | 26th | Background read from tty. | Reading from the terminal in the background | POSIX |
SIGTTOU | 22nd | 22nd | 22nd | 27 | Background write to tty | Writing on a terminal in the background. | POSIX |
SIGURG | 16 | 16 | 23 | 21st | Urgent condition on socket: high bandwidth data is available. | Important state on socket: High bandwidth data is available. | 4.2BSD; SUSv2; POSIX (2001) |
SIGXCPU | 24 | 24 | 24 | 30th | CPU time limit exceeded. | Processor time limit exceeded. | 4.2BSD; SUSv2; POSIX (2001) |
SIGXFSZ | 25th | 25th | 25th | 31 | File size limit exceeded. | File size limit exceeded. | 4.2BSD; SUSv2; POSIX (2001) |
SIGVTALRM | 26th | 26th | 26th | 28 | Virtual alarm clock. | Virtual alarm clock. | 4.2BSD; SUSv2; POSIX (2001) |
SIGPROF | 27 | 27 | 27 | 29 | Profiling alarm clock timer expired. | 4.2BSD; SUSv2; POSIX (2001) | |
SIGWINCH | - | 28 | 28 | 20th | Window size change. | Window size changed. | 4.3BSD; Sun |
SIGPOLL | 23 | 23 / - | 29 / - | 23 / - | Pollable event occurred. | A queryable event occurred. | System V; SUSv2; POSIX (2001) |
SIGIO | |||||||
SIGIO | 23 | 23 | 29 | 23 | I / O now possible. | I / O now possible. | 4.2BSD |
SIGPOLL | |||||||
SIGINFO | - | (29) | - | - | Status request from keyboard. | Status request through the keyboard. | Mac OS X |
SIGPWR | |||||||
SIGLOST | - | (29) / - | - | - | Unused; only on Sparc: file lock lost. | Unused; only under Sparc: file lock lost. | |
SIGPWR | - | (29) | 30th | 19th | Power failure restart. | Power failure caused restart. | System V |
SIGINFO | |||||||
SIGSYS | 12 | 12 | 31 | 12 | Bad system call. | invalid system call . | System Vr4; SUSv2; POSIX (2001) |
SIGUNUSED | |||||||
SIGUNUSED | 12 | - | 31 / - | - | |||
SIGSYS |
In addition to the usual 31 signal numbers, newer Linux versions use up to 32 additional signals from 33 (or 34, or 35 depending on the C library) ( SIGRTMIN ) to 64 ( SIGRTMAX ) as real-time signals .
Actions
The default behavior of the programs when they receive one of the signals is one of the following:
- Stopping (not ending) the running program.
- Continuation of the previously stopped program.
- Exiting the program without a memory dump.
- End the program by writing a memory dump.
- Ignoring the signal.
Except for SIGKILL and SIGSTOP , the signals can be "intercepted" by the program and trigger a different reaction.
See also
The Unix command kill can be used to send any signals under Unix.