OSDN Git Service

Retire LDP man-pages repository
[linuxjm/LDP_man-pages.git] / original / man7 / signal.7
diff --git a/original/man7/signal.7 b/original/man7/signal.7
deleted file mode 100644 (file)
index 09ef95e..0000000
+++ /dev/null
@@ -1,933 +0,0 @@
-'\" 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>
-.\"
-.\" %%%LICENSE_START(VERBATIM)
-.\" 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.
-.\" %%%LICENSE_END
-.\"
-.\" 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.
-.\" 2008-10-05, mtk: various additions
-.\"
-.TH SIGNAL 7  2015-02-01 "Linux" "Linux Programmer's Manual"
-.SH NAME
-signal \- overview of 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
-.BR signal (2).
-(The latter is less portable when establishing a signal handler;
-see
-.BR signal (2)
-for details.)
-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.
-(By default, the signal handler is invoked on the
-normal process stack.
-It is possible to arrange that the signal handler
-uses an alternate stack; see
-.BR sigaltstack (2)
-for a discussion of how to do this and when it might be useful.)
-
-The signal disposition is a per-process attribute:
-in a multithreaded application, the disposition of a
-particular signal is the same for all threads.
-
-A child created via
-.BR fork (2)
-inherits a copy of its parent's signal dispositions.
-During an
-.BR execve (2),
-the dispositions of handled signals are reset to the default;
-the dispositions of ignored signals are left unchanged.
-.SS Sending a signal
-The following system calls and library functions allow
-the caller to send a signal:
-.TP 16
-.BR raise (3)
-Sends a signal to the calling thread.
-.TP
-.BR kill (2)
-Sends a signal to a specified process,
-to all members of a specified process group,
-or to all processes on the system.
-.TP
-.BR killpg (2)
-Sends a signal to all of the members of a specified process group.
-.TP
-.BR pthread_kill (3)
-Sends a signal to a specified POSIX thread in the same process as
-the caller.
-.TP
-.BR tgkill (2)
-Sends a signal to a specified thread within a specific process.
-(This is the system call used to implement
-.BR pthread_kill (3).)
-.TP
-.BR sigqueue (3)
-Sends a real-time signal with accompanying data to a specified process.
-.SS Waiting for a signal to be caught
-The following system calls suspend execution of the calling process
-or thread until a signal is caught
-(or an unhandled signal terminates the process):
-.TP 16
-.BR pause (2)
-Suspends execution until any signal is caught.
-.TP
-.BR sigsuspend (2)
-Temporarily changes the signal mask (see below) and suspends
-execution until one of the unmasked signals is caught.
-.SS Synchronously accepting a signal
-Rather than asynchronously catching a signal via a signal handler,
-it is possible to synchronously accept the signal, that is,
-to block execution until the signal is delivered,
-at which point the kernel returns information about the
-signal to the caller.
-There are two general ways to do this:
-.IP * 2
-.BR sigwaitinfo (2),
-.BR sigtimedwait (2),
-and
-.BR sigwait (3)
-suspend execution until one of the signals in a specified
-set is delivered.
-Each of these calls returns information about the delivered signal.
-.IP *
-.BR signalfd (2)
-returns a file descriptor that can be used to read information
-about signals that are delivered to the caller.
-Each
-.BR read (2)
-from this file descriptor blocks until one of the signals
-in the set specified in the
-.BR signalfd (2)
-call is delivered to the caller.
-The buffer returned by
-.BR read (2)
-contains a structure describing the signal.
-.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 child created via
-.BR fork (2)
-inherits a copy of its parent's signal mask;
-the signal mask is preserved across
-.BR execve (2).
-
-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.
-
-A child created via
-.BR fork (2)
-initially has an empty pending signal set;
-the pending signal set is preserved across an
-.BR execve (2).
-.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 x86, arm, and most other architectures,
-and the last one for mips.
-(Values for parisc are
-.I not
-shown; see the Linux kernel source for signal numbering on that architecture.)
-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 terminal
-SIGTTIN        21,21,26        Stop    Terminal input for background process
-SIGTTOU        22,22,27        Stop    Terminal 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,31,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 (unused)
-SIGWINCH       28,28,20        Ign     Window resize signal (4.3BSD, Sun)
-SIGUNUSED      \-,31,\-        Core    Synonymous with \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.
-
-Where defined,
-.B SIGUNUSED
-is synonymous with
-.\" parisc is the only exception: SIGSYS is 12, SIGUNUSED is 31
-.B SIGSYS
-on most architectures.
-.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.
-.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 (3),
-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 handler function 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:
-
-.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
-.PP
-POSIX.1-2008 removes fpathconf(), pathconf(), and sysconf()
-from the above list, and adds the following functions:
-.PP
-.in +4n
-.nf
-execl()
-execv()
-faccessat()
-fchmodat()
-fchownat()
-fexecve()
-fstatat()
-futimens()
-linkat()
-mkdirat()
-mkfifoat()
-mknod()
-mknodat()
-openat()
-readlinkat()
-renameat()
-symlinkat()
-unlinkat()
-utimensat()
-utimes()
-.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.)
-A
-.BR read (2)
-on an
-.BR eventfd (2),
-.BR signalfd (2),
-.BR timerfd (2),
-.BR fanotify (7),
-or
-.BR inotify (7)
-file descriptor is also considered to be a "slow" operation.
-(Before Linux 3.8,
-.\" commit 1ca39ab9d21ac93f94b9e3eb364ea9a5cf2aba06
-reads from an
-.BR inotify (7)
-file descriptor were not restartable;
-when interrupted by a signal handler,
-.BR read (2)
-always failed with the error
-.BR EINTR .)
-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 recvmmsg (2),
-.BR recvmsg (2),
-.BR send (2),
-.BR sendto (2),
-and
-.\" FIXME . What about sendmmsg()?
-.BR sendmsg (2),
-unless a timeout has been set on the socket (see below).
-.IP *
-File locking interfaces:
-.BR flock (2)
-and
-the
-.BR F_SETLKW
-and
-.BR F_OFD_SETLKW
-operations of
-.BR fcntl (2)
-.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 *
-.BR getrandom (2).
-.IP *
-.BR pthread_mutex_lock (3),
-.BR pthread_cond_wait (3),
-and related APIs.
-.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
-"Input" socket interfaces, when a timeout
-.RB ( SO_RCVTIMEO )
-has been set on the socket using
-.BR setsockopt (2):
-.BR accept (2),
-.BR recv (2),
-.BR recvfrom (2),
-.BR recvmmsg (2)
-(also with a non-NULL
-.IR timeout
-argument),
-and
-.BR recvmsg (2).
-.IP *
-"Output" socket interfaces, when a timeout
-.RB ( SO_SNDTIMEO )
-has been set on the socket using
-.BR setsockopt (2):
-.BR connect (2),
-.BR send (2),
-.BR sendto (2),
-and
-.\" FIXME . What about sendmmsg()?
-.BR sendmsg (2).
-.IP *
-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 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
-"Input" socket interfaces, when a timeout
-.RB ( SO_RCVTIMEO )
-has been set on the socket using
-.BR setsockopt (2):
-.BR accept (2),
-.BR recv (2),
-.BR recvfrom (2),
-.BR recvmmsg (2)
-(also with a non-NULL
-.IR timeout
-argument),
-and
-.BR recvmsg (2).
-.IP *
-"Output" socket interfaces, when a timeout
-.RB ( SO_SNDTIMEO )
-has been set on the socket using
-.BR setsockopt (2):
-.BR connect (2),
-.BR send (2),
-.BR sendto (2),
-and
-.\" FIXME . What about sendmmsg()?
-.BR sendmsg (2).
-.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 *
-Linux 3.7 and earlier:
-.\" commit 1ca39ab9d21ac93f94b9e3eb364ea9a5cf2aba06
-.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.
-.\" It must be a *very* long time since this was true:
-.\" .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 restart_syscall (2),
-.BR rt_sigqueueinfo (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 sigreturn (2),
-.BR sigsuspend (2),
-.BR sigwaitinfo (2),
-.BR abort (3),
-.BR bsd_signal (3),
-.BR longjmp (3),
-.BR raise (3),
-.BR pthread_sigqueue (3),
-.BR sigqueue (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),
-.BR sigevent (7)
-.SH COLOPHON
-This page is part of release 3.79 of the Linux
-.I man-pages
-project.
-A description of the project,
-information about reporting bugs,
-and the latest version of this page,
-can be found at
-\%http://www.kernel.org/doc/man\-pages/.