'\" t
.\" Copyright (c) 1993 by Thomas Koenig (ig25@rz.uni-karlsruhe.de)
.\" and Copyright (c) 2002, 2006 by Michael Kerrisk <mtk.manpages@gmail.com>
.\" and Copyright (c) 2008 Linux Foundation, written by Michael Kerrisk
.\"     <mtk.manpages@gmail.com>
.\"
.\" Permission is granted to make and distribute verbatim copies of this
.\" manual provided the copyright notice and this permission notice are
.\" preserved on all copies.
.\"
.\" Permission is granted to copy and distribute modified versions of this
.\" manual under the conditions for verbatim copying, provided that the
.\" entire resulting derived work is distributed under the terms of a
.\" permission notice identical to this one.
.\"
.\" Since the Linux kernel and libraries are constantly changing, this
.\" manual page may be incorrect or out-of-date.  The author(s) assume no
.\" responsibility for errors or omissions, or for damages resulting from
.\" the use of the information contained herein.  The author(s) may not
.\" have taken the same level of care in the production of this manual,
.\" which is licensed free of charge, as they might when working
.\" professionally.
.\"
.\" Formatted or processed versions of this manual, if unaccompanied by
.\" the source, must acknowledge the copyright and authors of this work.
.\"
.\" Modified Sat Jul 24 17:34:08 1993 by Rik Faith (faith@cs.unc.edu)
.\" Modified Sun Jan  7 01:41:27 1996 by Andries Brouwer (aeb@cwi.nl)
.\" Modified Sun Apr 14 12:02:29 1996 by Andries Brouwer (aeb@cwi.nl)
.\" Modified Sat Nov 13 16:28:23 1999 by Andries Brouwer (aeb@cwi.nl)
.\" Modified 10 Apr 2002, by Michael Kerrisk <mtk.manpages@gmail.com>
.\" Modified  7 Jun 2002, by Michael Kerrisk <mtk.manpages@gmail.com>
.\"	Added information on real-time signals
.\" Modified 13 Jun 2002, by Michael Kerrisk <mtk.manpages@gmail.com>
.\"	Noted that SIGSTKFLT is in fact unused
.\" 2004-12-03, Modified mtk, added notes on RLIMIT_SIGPENDING
.\" 2006-04-24, mtk, Added text on changing signal dispositions,
.\"		signal mask, and pending signals.
.\" 2008-07-04, mtk:
.\"     Added section on system call restarting (SA_RESTART)
.\"     Added section on stop/cont signals interrupting syscalls.
.\"
.TH SIGNAL 7  2008-07-07 "Linux" "Linux Programmer's Manual"
.SH NAME
signal \- list of available signals
.SH DESCRIPTION
Linux supports both POSIX reliable signals (hereinafter
"standard signals") and POSIX real-time signals.
.SS "Signal Dispositions"
Each signal has a current
.IR disposition ,
which determines how the process behaves when it is delivered
the signal.

The entries in the "Action" column of the tables below specify
the default disposition for each signal, as follows:
.IP Term
Default action is to terminate the process.
.IP Ign
Default action is to ignore the signal.
.IP Core
Default action is to terminate the process and dump core (see
.BR core (5)).
.IP Stop
Default action is to stop the process.
.IP Cont
Default action is to continue the process if it is currently stopped.
.PP
A process can change the disposition of a signal using
.BR sigaction (2)
or (less portably)
.BR signal (2).
Using these system calls, a process can elect one of the
following behaviors to occur on delivery of the signal:
perform the default action; ignore the signal;
or catch the signal with a
.IR "signal handler" ,
a programmer-defined function that is automatically invoked
when the signal is delivered.

The signal disposition is a per-process attribute:
in a multithreaded application, the disposition of a
particular signal is the same for all threads.
.SS "Signal Mask and Pending Signals"
A signal may be
.IR blocked ,
which means that it will not be delivered until it is later unblocked.
Between the time when it is generated and when it is delivered
a signal is said to be
.IR pending .

Each thread in a process has an independent
.IR "signal mask" ,
which indicates the set of signals that the thread is currently blocking.
A thread can manipulate its signal mask using
.BR pthread_sigmask (3).
In a traditional single-threaded application,
.BR sigprocmask (2)
can be used to manipulate the signal mask.

A signal may be generated (and thus pending)
for a process as a whole (e.g., when sent using
.BR kill (2))
or for a specific thread (e.g., certain signals,
such as
.B SIGSEGV
and
.BR SIGFPE ,
generated as a
consequence of executing a specific machine-language instruction
are thread directed, as are signals targeted at a specific thread using
.BR pthread_kill (3)).
A process-directed signal may be delivered to any one of the
threads that does not currently have the signal blocked.
If more than one of the threads has the signal unblocked, then the
kernel chooses an arbitrary thread to which to deliver the signal.

A thread can obtain the set of signals that it currently has pending
using
.BR sigpending (2).
This set will consist of the union of the set of pending
process-directed signals and the set of signals pending for
the calling thread.
.SS "Standard Signals"
Linux supports the standard signals listed below.
Several signal numbers
are architecture-dependent, as indicated in the "Value" column.
(Where three values are given, the first one is usually valid for
alpha and sparc,
the middle one for ix86, ia64, ppc, s390, arm and sh,
and the last one for mips.
.\" parisc is a law unto itself
A \- denotes that a signal is absent on the corresponding architecture.)

First the signals described in the original POSIX.1-1990 standard.
.TS
l c c l
____
lB c c l.
Signal	Value	Action	Comment
SIGHUP	\01	Term	Hangup detected on controlling terminal
			or death of controlling process
SIGINT	\02	Term	Interrupt from keyboard
SIGQUIT	\03	Core	Quit from keyboard
SIGILL	\04	Core	Illegal Instruction
SIGABRT	\06	Core	Abort signal from \fBabort\fP(3)
SIGFPE	\08	Core	Floating point exception
SIGKILL	\09	Term	Kill signal
SIGSEGV	11	Core	Invalid memory reference
SIGPIPE	13	Term	Broken pipe: write to pipe with no
			readers
SIGALRM	14	Term	Timer signal from \fBalarm\fP(2)
SIGTERM	15	Term	Termination signal
SIGUSR1	30,10,16	Term	User-defined signal 1
SIGUSR2	31,12,17	Term	User-defined signal 2
SIGCHLD	20,17,18	Ign	Child stopped or terminated
SIGCONT	19,18,25	Cont	Continue if stopped
SIGSTOP	17,19,23	Stop	Stop process
SIGTSTP	18,20,24	Stop	Stop typed at tty
SIGTTIN	21,21,26	Stop	tty input for background process
SIGTTOU	22,22,27	Stop	tty output for background process
.TE

The signals
.B SIGKILL
and
.B SIGSTOP
cannot be caught, blocked, or ignored.

Next the signals not in the POSIX.1-1990 standard but described in
SUSv2 and POSIX.1-2001.
.TS
l c c l
____
lB c c l.
Signal	Value	Action	Comment
SIGBUS	10,7,10	Core	Bus error (bad memory access)
SIGPOLL		Term	Pollable event (Sys V).
			Synonym for \fBSIGIO\fP
SIGPROF	27,27,29	Term	Profiling timer expired
SIGSYS	12,\-,12	Core	Bad argument to routine (SVr4)
SIGTRAP	5	Core	Trace/breakpoint trap
SIGURG	16,23,21	Ign	Urgent condition on socket (4.2BSD)
SIGVTALRM	26,26,28	Term	Virtual alarm clock (4.2BSD)
SIGXCPU	24,24,30	Core	CPU time limit exceeded (4.2BSD)
SIGXFSZ	25,25,31	Core	File size limit exceeded (4.2BSD)
.TE

Up to and including Linux 2.2, the default behavior for
.BR SIGSYS ", " SIGXCPU ", " SIGXFSZ ", "
and (on architectures other than SPARC and MIPS)
.B SIGBUS
was to terminate the process (without a core dump).
(On some other Unix systems the default action for
.BR SIGXCPU " and " SIGXFSZ
is to terminate the process without a core dump.)
Linux 2.4 conforms to the POSIX.1-2001 requirements for these signals,
terminating the process with a core dump.

Next various other signals.
.TS
l c c l
____
lB c c l.
Signal	Value	Action	Comment
SIGIOT	6	Core	IOT trap. A synonym for \fBSIGABRT\fP
SIGEMT	7,\-,7	Term
SIGSTKFLT	\-,16,\-	Term	Stack fault on coprocessor (unused)
SIGIO	23,29,22	Term	I/O now possible (4.2BSD)
SIGCLD	\-,\-,18	Ign	A synonym for \fBSIGCHLD\fP
SIGPWR	29,30,19	Term	Power failure (System V)
SIGINFO	29,\-,\-		A synonym for \fBSIGPWR\fP
SIGLOST	\-,\-,\-	Term	File lock lost
SIGWINCH	28,28,20	Ign	Window resize signal (4.3BSD, Sun)
SIGUNUSED	\-,31,\-	Term	Unused signal (will be \fBSIGSYS\fP)
.TE

(Signal 29 is
.B SIGINFO
/
.B SIGPWR
on an alpha but
.B SIGLOST
on a sparc.)

.B SIGEMT
is not specified in POSIX.1-2001, but nevertheless appears
on most other Unix systems,
where its default action is typically to terminate
the process with a core dump.

.B SIGPWR
(which is not specified in POSIX.1-2001) is typically ignored
by default on those other Unix systems where it appears.

.B SIGIO
(which is not specified in POSIX.1-2001) is ignored by default
on several other Unix systems.
.SS "Real-time Signals"
Linux supports real-time signals as originally defined in the POSIX.1b
real-time extensions (and now included in POSIX.1-2001).
The range of supported real-time signals is defined by the macros
.B SIGRTMIN
and
.BR SIGRTMAX .
POSIX.1-2001 requires that an implementation support at least
.B _POSIX_RTSIG_MAX
(8) real-time signals.
.PP
The Linux kernel supports a range of 32 different real-time
signals, numbered 33 to 64.
However, the glibc POSIX threads implementation internally uses
two (for NPTL) or three (for LinuxThreads) real-time signals
(see
.BR pthreads (7)),
and adjusts the value of
.B SIGRTMIN
suitably (to 34 or 35).
Because the range of available real-time signals varies according
to the glibc threading implementation (and this variation can occur
at run time according to the available kernel and glibc),
and indeed the range of real-time signals varies across Unix systems,
programs should
.IR "never refer to real-time signals using hard-coded numbers" ,
but instead should always refer to real-time signals using the notation
.BR SIGRTMIN +n,
and include suitable (run-time) checks that
.BR SIGRTMIN +n
does not exceed
.BR SIGRTMAX .
.PP
Unlike standard signals, real-time signals have no predefined meanings:
the entire set of real-time signals can be used for application-defined
purposes.
(Note, however, that the LinuxThreads implementation uses the first
three real-time signals.)
.PP
The default action for an unhandled real-time signal is to terminate the
receiving process.
.PP
Real-time signals are distinguished by the following:
.IP 1. 4
Multiple instances of real-time signals can be queued.
By contrast, if multiple instances of a standard signal are delivered
while that signal is currently blocked, then only one instance is queued.
.IP 2. 4
If the signal is sent using
.BR sigqueue (2),
an accompanying value (either an integer or a pointer) can be sent
with the signal.
If the receiving process establishes a handler for this signal using the
.B SA_SIGINFO
flag to
.BR sigaction (2)
then it can obtain this data via the
.I si_value
field of the
.I siginfo_t
structure passed as the second argument to the handler.
Furthermore, the
.I si_pid
and
.I si_uid
fields of this structure can be used to obtain the PID
and real user ID of the process sending the signal.
.IP 3. 4
Real-time signals are delivered in a guaranteed order.
Multiple real-time signals of the same type are delivered in the order
they were sent.
If different real-time signals are sent to a process, they are delivered
starting with the lowest-numbered signal.
(I.e., low-numbered signals have highest priority.)
By contrast, if multiple standard signals are pending for a process,
the order in which they are delivered is unspecified.
.PP
If both standard and real-time signals are pending for a process,
POSIX leaves it unspecified which is delivered first.
Linux, like many other implementations, gives priority
to standard signals in this case.
.PP
According to POSIX, an implementation should permit at least
.B _POSIX_SIGQUEUE_MAX
(32) real-time signals to be queued to
a process.
However, Linux does things differently.
In kernels up to and including 2.6.7, Linux imposes
a system-wide limit on the number of queued real-time signals
for all processes.
This limit can be viewed and (with privilege) changed via the
.I /proc/sys/kernel/rtsig-max
file.
A related file,
.IR /proc/sys/kernel/rtsig-nr ,
can be used to find out how many real-time signals are currently queued.
In Linux 2.6.8, these
.I /proc
interfaces were replaced by the
.B RLIMIT_SIGPENDING
resource limit, which specifies a per-user limit for queued
signals; see
.BR setrlimit (2)
for further details.
.SS "Async-signal-safe functions"
.PP
A signal handling routine established by
.BR sigaction (2)
or
.BR signal (2)
must be very careful, since processing elsewhere may be interrupted
at some arbitrary point in the execution of the program.
POSIX has the concept of "safe function".
If a signal interrupts the execution of an unsafe function, and
.I handler
calls an unsafe function, then the behavior of the program is undefined.

POSIX.1-2004 (also known as POSIX.1-2001 Technical Corrigendum 2)
requires an implementation to guarantee that the following
functions can be safely called inside a signal handler:
.\" FIXME . SUSv4 adds functions to this list, and removes a few.

.in +4
.nf
_Exit()
_exit()
abort()
accept()
access()
aio_error()
aio_return()
aio_suspend()
alarm()
bind()
cfgetispeed()
cfgetospeed()
cfsetispeed()
cfsetospeed()
chdir()
chmod()
chown()
clock_gettime()
close()
connect()
creat()
dup()
dup2()
execle()
execve()
fchmod()
fchown()
fcntl()
fdatasync()
fork()
fpathconf()
fstat()
fsync()
ftruncate()
getegid()
geteuid()
getgid()
getgroups()
getpeername()
getpgrp()
getpid()
getppid()
getsockname()
getsockopt()
getuid()
kill()
link()
listen()
lseek()
lstat()
mkdir()
mkfifo()
open()
pathconf()
pause()
pipe()
poll()
posix_trace_event()
pselect()
raise()
read()
readlink()
recv()
recvfrom()
recvmsg()
rename()
rmdir()
select()
sem_post()
send()
sendmsg()
sendto()
setgid()
setpgid()
setsid()
setsockopt()
setuid()
shutdown()
sigaction()
sigaddset()
sigdelset()
sigemptyset()
sigfillset()
sigismember()
signal()
sigpause()
sigpending()
sigprocmask()
sigqueue()
sigset()
sigsuspend()
sleep()
sockatmark()
socket()
socketpair()
stat()
symlink()
sysconf()
tcdrain()
tcflow()
tcflush()
tcgetattr()
tcgetpgrp()
tcsendbreak()
tcsetattr()
tcsetpgrp()
time()
timer_getoverrun()
timer_gettime()
timer_settime()
times()
umask()
uname()
unlink()
utime()
wait()
waitpid()
write()
.fi
.in
.SS Interruption of System Calls and Library Functions by Signal Handlers
If a signal handler is invoked while a system call or library
function call is blocked, then either:
.IP * 2
the call is automatically restarted after the signal handler returns; or
.IP *
the call fails with the error
.BR EINTR .
.PP
Which of these two behaviors occurs depends on the interface and
whether or not the signal handler was established using the
.BR SA_RESTART
flag (see
.BR sigaction (2)).
The details vary across Unix systems;
below, the details for Linux.

If a blocked call to one of the following interfaces is interrupted
by a signal handler, then the call will be automatically restarted
after the signal handler returns if the
.BR SA_RESTART
flag was used; otherwise the call will fail with the error
.BR EINTR :
.\" The following system calls use ERESTARTSYS,
.\" so that they are restartable
.RS 4
.IP * 2
.BR read (2),
.BR readv (2),
.BR write (2),
.BR writev (2),
and
.BR ioctl (2)
calls on "slow" devices.
A "slow" device is one where the I/O call may block for an
indefinite time, for example, a terminal, pipe, or socket.
(A disk is not a slow device according to this definition.)
If an I/O call on a slow device has already transferred some
data by the time it is interrupted by a signal handler,
then the call will return a success status
(normally, the number of bytes transferred).
.IP *
.BR open (2),
if it can block (e.g., when opening a FIFO; see
.BR fifo (7)).
.IP *
.BR wait (2),
.BR wait3 (2),
.BR wait4 (2),
.BR waitid (2),
and
.BR waitpid (2).
.IP *
Socket interfaces:
.\" If a timeout (setsockopt()) is in effect on the socket, then these
.\" system calls switch to using EINTR.  Consequently, they and are not
.\" automatically restarted, and they show the stop/cont behavior
.\" described below.  (Verified from 2.6.26 source, and by experiment; mtk)
.BR accept (2),
.BR connect (2),
.BR recv (2),
.BR recvfrom (2),
.BR recvmsg (2),
.BR send (2),
.BR sendto (2),
and
.BR sendmsg (2).
.IP *
File locking interfaces:
.BR flock (2)
and
.BR fcntl (2)
.BR F_SETLKW .
.IP *
POSIX message queue interfaces:
.BR mq_receive (3),
.BR mq_timedreceive (3),
.BR mq_send (3),
and
.BR mq_timedsend (3).
.IP *
.BR futex (2)
.B FUTEX_WAIT
(since Linux 2.6.22; beforehand, always failed with
.BR EINTR ).
.IP *
POSIX semaphore interfaces:
.BR sem_wait (3)
and
.BR sem_timedwait (3)
(since Linux 2.6.22; beforehand, always failed with
.BR EINTR ).
.RE
.PP
The following interfaces are never restarted after
being interrupted by a signal handler,
regardless of the use of
.BR SA_RESTART ;
they always fail with the error
.B EINTR
when interrupted by a signal handler:
.\" These are the system calls that give EINTR or ERESTARTNOHAND
.\" on interruption by a signal handler.
.RS 4
.IP * 2
Interfaces used to wait for signals:
.BR pause (2),
.BR sigsuspend (2),
.BR sigtimedwait (2),
and
.BR sigwaitinfo (2).
.IP *
File descriptor multiplexing interfaces:
.BR epoll_wait (2),
.BR epoll_pwait (2),
.BR poll (2),
.BR ppoll (2),
.BR select (2),
and
.BR pselect (2).
.IP *
System V IPC interfaces:
.\" On some other systems, SA_RESTART does restart these system calls
.BR msgrcv (2),
.BR msgsnd (2),
.BR semop (2),
and
.BR semtimedop (2).
.IP *
Sleep interfaces:
.BR clock_nanosleep (2),
.BR nanosleep (2),
and
.BR usleep (3).
.IP *
.BR read (2)
from an
.BR inotify (7)
file descriptor.
.IP *
.BR io_getevents (2).
.RE
.PP
The
.BR sleep (3)
function is also never restarted if interrupted by a handler,
but gives a success return: the number of seconds remaining to sleep.
.SS Interruption of System Calls and Library Functions by Stop Signals
On Linux, even in the absence of signal handlers,
certain blocking interfaces can fail with the error
.BR EINTR
after the process is stopped by one of the stop signals
and then resumed via
.BR SIGCONT .
This behavior is not sanctioned by POSIX.1, and doesn't occur
on other systems.

The Linux interfaces that display this behavior are:
.RS 4
.IP * 2
.BR epoll_wait (2),
.BR epoll_pwait (2).
.IP *
.BR semop (2),
.BR semtimedop (2).
.IP *
.BR sigtimedwait (2),
.BR sigwaitinfo (2).
.IP *
.BR read (2)
from an
.BR inotify (7)
file descriptor.
.IP *
Linux 2.6.21 and earlier:
.BR futex (2)
.BR FUTEX_WAIT ,
.BR sem_timedwait (3),
.BR sem_wait (3).
.IP *
Linux 2.6.8 and earlier:
.BR msgrcv (2),
.BR msgsnd (2).
.IP *
Linux 2.4 and earlier:
.BR nanosleep (2).
.RE
.SH "CONFORMING TO"
POSIX.1, except as noted.
.SH BUGS
.B SIGIO
and
.B SIGLOST
have the same value.
The latter is commented out in the kernel source, but
the build process of some software still thinks that
signal 29 is
.BR SIGLOST .
.SH "SEE ALSO"
.BR kill (1),
.BR getrlimit (2),
.BR kill (2),
.BR killpg (2),
.BR setitimer (2),
.BR setrlimit (2),
.BR sgetmask (2),
.BR sigaction (2),
.BR sigaltstack (2),
.BR signal (2),
.BR signalfd (2),
.BR sigpending (2),
.BR sigprocmask (2),
.BR sigqueue (2),
.BR sigsuspend (2),
.BR sigwaitinfo (2),
.BR abort (3),
.BR bsd_signal (3),
.BR longjmp (3),
.BR raise (3),
.BR sigset (3),
.BR sigsetops (3),
.BR sigvec (3),
.BR sigwait (3),
.BR strsignal (3),
.BR sysv_signal (3),
.BR core (5),
.BR proc (5),
.BR pthreads (7)
