summaryrefslogtreecommitdiff
path: root/static/netbsd/man7/signal.7
diff options
context:
space:
mode:
Diffstat (limited to 'static/netbsd/man7/signal.7')
-rw-r--r--static/netbsd/man7/signal.7633
1 files changed, 633 insertions, 0 deletions
diff --git a/static/netbsd/man7/signal.7 b/static/netbsd/man7/signal.7
new file mode 100644
index 00000000..37515d50
--- /dev/null
+++ b/static/netbsd/man7/signal.7
@@ -0,0 +1,633 @@
+.\" $NetBSD: signal.7,v 1.28 2023/07/17 14:20:19 riastradh Exp $
+.\"
+.\" Copyright (c) 1999, 2016 The NetBSD Foundation, Inc.
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+.\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+.\" TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+.\" PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+.\" BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+.\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+.\" POSSIBILITY OF SUCH DAMAGE.
+.\"
+.Dd August 24, 2018
+.Dt SIGNAL 7
+.Os
+.Sh NAME
+.Nm signal
+.Nd signal facilities
+.Sh DESCRIPTION
+A
+.Nm
+is a system-level notification delivered to a process.
+Signals may be generated as the result of process activity, by certain
+user inputs, by kernel facilities or subsystems, or sent
+programmatically by other processes or by users.
+There is a small fixed set of signals, each with a symbolic name and a
+number.
+For historical reasons many of the numbers are ``well-known values'',
+which are in practice the same on all implementations and
+realistically can never be changed.
+(Nonetheless, compiled code should always use only the symbolic
+names.)
+Many/most signals also have specific semantics, both in how they can
+be generated and in their effects.
+Some are special cases in ways that have quite far-reaching
+consequences.
+.Pp
+When a signal is
+.Em posted
+.Pq Dq sent
+to a process, in general any of several things can happen.
+If the process has elected to
+.Em ignore
+the signal, it is discarded and nothing happens.
+(Some signals may not be ignored, however.)
+If the process has elected to
+.Em block
+the signal temporarily, delivery is postponed until the process
+later unblocks that signal.
+Otherwise, the signal is
+.Em delivered ,
+meaning that whatever the process is doing is interrupted in order to
+react to the signal.
+(Note that processes that are waiting in the kernel must unwind what
+they are doing for signals to be delivered.
+This can sometimes be expensive.
+See
+.Xr sigaction 2
+for further information.)
+.Pp
+If the process has elected to
+.Em catch
+the signal, which means that the process has installed a handler to
+react to the signal in some process-specific way, the kernel arranges
+for the process's handler logic to be invoked.
+This is always done in a way that allows the process to resume if
+desired.
+(Note, however, that some signals may not be caught.)
+Otherwise, the default action for the signal is taken.
+For most signals the default action is to terminate the process and
+generate a core dump.
+See the table below.
+Note that the term
+.Em delivery
+is also used for the specific process of arranging for a signal
+handler to be invoked.
+.Pp
+In general, signals are delivered as soon as they are posted.
+(Some delays may occur due to scheduling.)
+However, in some cases a process that has been sleeping in the kernel
+may need to do slow things as part of unwinding its state; this can
+sometimes lead to human-perceptible delays.
+.Pp
+Also, some sleep states within the kernel are
+.Em uninterruptible
+meaning that signals posted will have no effect until the state
+clears.
+These states are supposed to be short-term only, but sometimes kernel
+bugs make this not the case and one can end up with unkillable
+processes.
+Such processes appear in state "D" in
+.Xr ps 1 .
+In general the only way to get rid of them is to reboot.
+(However, when the "wchan" reported is "tstile", it means the process
+is waiting for some other process to release resources; sometimes if
+one can find and kill that process the situation is recoverable.)
+.Ss Signal list
+The following signals are defined in
+.Nx :
+.Pp
+.Bl -column ".Sy SIGVTALRM" 3n "Profiling timer expired blablabla" -compact
+.\".It Sy "Symbol" Ta No Ta Sy "Descriptive name"
+.It Dv SIGHUP Ta 1 Ta "Hangup"
+.It Dv SIGINT Ta 2 Ta "Interrupt"
+.It Dv SIGQUIT Ta 3 Ta "Quit"
+.It Dv SIGILL Ta 4 Ta "Illegal instruction"
+.It Dv SIGTRAP Ta 5 Ta "Trace/BPT trap"
+.It Dv SIGABRT Ta 6 Ta "Abort trap"
+.It Dv SIGEMT Ta 7 Ta "EMT trap"
+.It Dv SIGFPE Ta 8 Ta "Floating point exception"
+.It Dv SIGKILL Ta 9 Ta "Killed"
+.It Dv SIGBUS Ta 10 Ta "Bus error"
+.It Dv SIGSEGV Ta 11 Ta "Segmentation fault"
+.It Dv SIGSYS Ta 12 Ta "Bad system call"
+.It Dv SIGPIPE Ta 13 Ta "Broken pipe"
+.It Dv SIGALRM Ta 14 Ta "Alarm clock"
+.It Dv SIGTERM Ta 15 Ta "Terminated"
+.It Dv SIGURG Ta 16 Ta "Urgent I/O condition"
+.It Dv SIGSTOP Ta 17 Ta "Suspended (signal)"
+.It Dv SIGTSTP Ta 18 Ta "Suspended"
+.It Dv SIGCONT Ta 19 Ta "Continued"
+.It Dv SIGCHLD Ta 20 Ta "Child exited, stopped or continued"
+.It Dv SIGTTIN Ta 21 Ta "Stopped (tty input)"
+.It Dv SIGTTOU Ta 22 Ta "Stopped (tty output)"
+.It Dv SIGIO Ta 23 Ta "I/O possible"
+.It Dv SIGXCPU Ta 24 Ta "CPU time limit exceeded"
+.It Dv SIGXFSZ Ta 25 Ta "File size limit exceeded"
+.It Dv SIGVTALRM Ta 26 Ta "Virtual timer expired"
+.It Dv SIGPROF Ta 27 Ta "Profiling timer expired"
+.It Dv SIGWINCH Ta 28 Ta "Window size changed"
+.It Dv SIGINFO Ta 29 Ta "Information request"
+.It Dv SIGUSR1 Ta 30 Ta "User defined signal 1"
+.It Dv SIGUSR2 Ta 31 Ta "User defined signal 2"
+.It Dv SIGPWR Ta 32 Ta "Power fail/restart"
+.El
+.Pp
+These are numbered 1 to 32.
+(There is no signal 0; 0 is a reserved value that can be used as a
+no-op with some signal operations.)
+.Pp
+Detailed descriptions of these signals follow.
+.Bl -tag -width "aaa"
+.\" ************
+.It Dv SIGHUP No (Hangup)
+This signal is generated by the
+.Xr tty 4
+driver
+to indicate a hangup condition on a process's controlling terminal:
+the user has disconnected.
+Accordingly, the default action is to terminate the process.
+This signal is also used by many daemons,
+such as
+.Xr inetd 8 ,
+as a cue to reload configuration.
+The number for
+.Dv SIGHUP
+is\~1, which is quite well known.
+.\" ************
+.It Dv SIGINT No (Interrupt)
+This signal is generated by the
+.Xr tty 4
+driver
+when the user presses the interrupt character, normally control-C.
+The default action is to terminate the process.
+The number for
+.Dv SIGINT
+is\~2.
+.\" ************
+.It Dv SIGQUIT No (Quit)
+This signal is generated by the
+.Xr tty 4
+driver
+when the user presses the quit character, normally control-backspace.
+The default action is to terminate the process and dump core.
+The number for
+.Dv SIGQUIT
+is\~3.
+.\" ************
+.It Dv SIGILL No (Illegal instruction)
+This signal is generated synchronously by the kernel when the process
+executes an invalid instruction.
+The default action is to terminate the process and dump core.
+Note: the results of executing an illegal instruction when
+.Dv SIGILL
+is blocked or ignored are formally unspecified.
+The number for
+.Dv SIGILL
+is\~4.
+.\" ************
+.It Dv SIGTRAP No (Trace/BPT trap)
+This signal is used when a process is being traced
+(see
+.Xr ptrace 2 )
+to indicate that the process has stopped at a breakpoint or after
+single-stepping.
+It is normally intercepted by the debugger and not exposed to the
+debuggee.
+The default action is to terminate the process and dump core.
+The number for
+.Dv SIGTRAP
+is\~5.
+.\" ************
+.It Dv SIGABRT No (Abort trap)
+This signal is generated when the
+.Xr abort 3
+standard library function is called.
+The default action is to terminate the process and dump core.
+The number for
+.Dv SIGABRT
+is\~6.
+This number was also formerly used for
+.Dv SIGIOT ,
+which is no longer defined,
+as it was specific to the PDP-11 instruction
+.Dv iot .
+.\" ************
+.It Dv SIGEMT No (EMT trap)
+In theory this signal is generated when an instruction needs to be
+emulated.
+.\" XXX expand this -- I don't know, grep isn't helping much and
+.\" information seems pretty thin on the ground on the net.
+The default action is to terminate the process and dump core.
+The number for
+.Dv SIGEMT
+is\~7.
+.\" ************
+.It Dv SIGFPE No (Floating point exception)
+This signal is generated when an invalid floating point operation is
+detected by hardware or by a soft-float library.
+The default action is to terminate the process and dump core.
+The number for
+.Dv SIGFPE
+is\~8.
+.\" ************
+.It Dv SIGKILL No (Killed)
+This signal cannot be caught or ignored.
+The (unconditional) action is to terminate the process.
+It is most often sent by system administrators, but is also generated
+by the kernel in response to running completely out of memory and
+swap space.
+Note that because many processes need to perform cleanup before
+exiting, it is usually best (as a user or administrator) to not deploy
+.Dv SIGKILL
+until a process has failed to respond to other signals.
+The number for
+.Dv SIGKILL
+is\~9, which is extremely well known.
+.\" ************
+.It Dv SIGBUS No (Bus error)
+This signal is generated synchronously by the kernel when the process
+performs certain kinds of invalid memory accesses.
+The most common cause of
+.Dv SIGBUS
+is an unaligned memory access; however, on some architectures it may
+cover other memory conditions, such as attempts to access memory
+belonging to the kernel.
+The default action is to terminate the process and dump core.
+Note: the results of performing such invalid accesses when
+.Dv SIGBUS
+is blocked or ignored are formally unspecified.
+The number for
+.Dv SIGBUS
+is\~10.
+.\" ************
+.It Dv SIGSEGV No (Segmentation fault)
+This signal is generated synchronously by the kernel when the process
+attempts to access unmapped memory, or access memory in a manner that
+the protection settings for that memory region do not permit.
+On some architectures other assorted permission or protection errors
+also yield
+.Dv SIGSEGV .
+On
+.Nx ,
+passing invalid pointers to system calls will yield failure with
+.Er EFAULT
+but not also
+.Dv SIGSEGV .
+The default action is to terminate the process and dump core.
+Note: the results of an invalid memory access when
+.Dv SIGSEGV
+is blocked or ignored are formally unspecified.
+The number for
+.Dv SIGSEGV
+is\~11, which is very well known.
+.\" ************
+.It Dv SIGSYS No (Bad system call)
+This signal is generated by the kernel, in addition to failing with
+.Er ENOSYS ,
+when a system call is made using an invalid system call number.
+.\" (This facility was intended to facilitate emulation of system calls.)
+The default action is to terminate the process and dump core.
+The number for
+.Dv SIGSYS
+is\~12.
+.\" ************
+.It Dv SIGPIPE No (Broken pipe)
+This signal is generated by the kernel, in addition to failing with
+.Er EPIPE ,
+when a
+.Xr write 2
+call or similar is made on a pipe or socket that has been closed and
+has no readers.
+The default action is to terminate the process.
+The number for
+.Dv SIGPIPE
+is\~13.
+.\" ************
+.It Dv SIGALRM No (Alarm clock)
+This signal is generated by the kernel when a real-time timer expires.
+See
+.Xr alarm 3 ,
+.Xr setitimer 2 ,
+and
+.Xr timer_settime 2 .
+The default action is to terminate the process.
+The number for
+.Dv SIGALRM
+is\~14.
+.\" ************
+.It Dv SIGTERM No (Terminated)
+This signal is the default signal sent by
+.Xr kill 1
+and represents a user or administrator request that a program shut
+down.
+It is sent to all processes as part of the
+.Xr shutdown 8
+procedure.
+The default action is to terminate the process.
+The number for
+.Dv SIGTERM
+is\~15.
+.\" ************
+.It Dv SIGURG No (Urgent I/O condition)
+This signal is generated when an ``urgent condition'' exists on a
+socket.
+In practice this means when
+.Xr tcp 4
+out-of-band data has arrived.
+The default action is to do nothing.
+The number for
+.Dv SIGURG
+is\~16.
+.\" ************
+.It Dv SIGSTOP No (Suspended (signal))
+This signal cannot be caught or ignored.
+The (unconditional) action is to stop the process.
+Note that like with
+.Dv SIGKILL
+(and for similar reasons) it is best to not send this signal until a
+process has failed to respond to
+.Dv SIGTSTP .
+It can also be used by processes to stop themselves after catching
+.Dv SIGTSTP .
+A process that is explicitly stopped will not run again until told to
+with
+.Dv SIGCONT .
+The number for
+.Dv SIGSTOP
+is\~17.
+.\" ************
+.It Dv SIGTSTP No (Suspended)
+This signal is generated by the
+.Xr tty 4
+driver
+when the user presses the stop character, normally control-Z.
+The default action is to stop the process.
+The number for
+.Dv SIGTSTP
+is\~18.
+.\" ************
+.It Dv SIGCONT No (Continued)
+This signal is generated by the job-control feature of shells to
+manage processes.
+It causes the target process to start executing again after previously
+being stopped.
+This happens as a magic extra effect
+.Nm before
+the signal is actually delivered.
+The default action when the signal is delivered is to do nothing (else).
+The number for
+.Dv SIGCONT
+is\~19.
+.\" ************
+.It Dv SIGCHLD No (Child exited, stopped or continued)
+This signal is generated by the kernel when one of a process's
+immediate children exits and can be waited for using one of the
+.Xr wait 2
+family of functions.
+The default action is to do nothing.
+.Pp
+As a special case, if a child exits when its parent process has
+.Dv SIGCHLD
+ignored
+.Pq not merely blocked
+by having its signal handler set to
+.Dv SIG_IGN ,
+or if the signal action has the
+.Dv SA_NOCLDWAIT
+flag set
+.Pq Xr sigaction 2 ,
+then the child is detached so that
+.Xr wait 2
+in the parent will wait for
+.Em all
+children to exit and then fail with
+.Er ECHILD
+without returning any information about any specific child processes.
+.Pp
+The number for
+.Dv SIGCHLD
+is\~20.
+This signal was spelled
+.Dv SIGCLD
+in old System V versions and today many systems provide both
+spellings.
+.\" ************
+.It Dv SIGTTIN No (Stopped (tty input))
+This signal is generated by the
+.Xr tty 4
+driver
+when a process that is not in the foreground of its controlling
+terminal attempts to read from this terminal.
+The default action is to stop the process.
+The number for
+.Dv SIGTTIN
+is\~21.
+.\" ************
+.It Dv SIGTTOU No (Stopped (tty output))
+This signal is generated by the
+.Xr tty 4
+driver
+when a process that is not in the foreground of its controlling
+terminal attempts to write to this terminal, if the terminal is
+configured accordingly, which is not the default.
+(See
+.Xr termios 4 . )
+The default action is to stop the process.
+The number for
+.Dv SIGTTOU
+is\~22.
+.\" ************
+.It Dv SIGIO No (I/O possible)
+This signal is sent by the kernel when I/O becomes possible on a file
+handle opened for asynchronous access with
+.Dv O_ASYNC .
+See
+.Xr open 2
+and
+.Xr fcntl 2 .
+The default action is to do nothing.
+The number for
+.Dv SIGIO
+is\~23.
+.\" ************
+.It Dv SIGXCPU No (CPU time limit exceeded)
+This signal is sent by the kernel when the amount of CPU time consumed
+exceeds the configured limit.
+See
+.Xr setrlimit 2
+and the
+.Ic ulimit
+and
+.Ic rlimit
+builtins of
+.Xr sh 1
+and
+.Xr csh 1
+respectively.
+The default action is to terminate the process.
+The number for
+.Dv SIGXCPU
+is\~24.
+.\" ************
+.It Dv SIGXFSZ No (File size limit exceeded)
+This signal is sent by the kernel when a write causes the size of a
+file to exceed the configured limit.
+See
+.Xr setrlimit 2
+and the
+.Ic ulimit
+and
+.Ic rlimit
+builtins of
+.Xr sh 1
+and
+.Xr csh 1
+respectively.
+The default action is to terminate the process.
+The number for
+.Dv SIGXFSZ
+is\~25.
+.\" ************
+.It Dv SIGVTALRM No (Virtual timer expired)
+This signal is generated by the kernel when a virtual-time (process
+execution time) timer expires.
+See
+.Xr setitimer 2
+and
+.Xr timer_settime 2 .
+The default action is to terminate the process.
+The number for
+.Dv SIGVTALRM
+is\~26.
+.\" ************
+.It Dv SIGPROF No (Profiling timer expired)
+This signal is generated by the kernel when a profiling timer
+expires.
+See
+.Xr setitimer 2
+and
+.Xr timer_settime 2 .
+The default action is to terminate the process.
+The number for
+.Dv SIGPROF
+is\~27.
+.\" ************
+.It Dv SIGWINCH No (Window size changed)
+This signal is generated by the
+.Xr tty 4
+driver
+when the stored window size of the process's controlling terminal has
+changed.
+The default action is to do nothing.
+The number for
+.Dv SIGWINCH
+is\~28.
+.\" ************
+.It Dv SIGINFO No (Information request)
+This signal is generated by the
+.Xr tty 4
+driver
+when the user presses the status request character, normally
+control-T.
+The default action is to do nothing.
+The number for
+.Dv SIGINFO
+is\~29.
+.\" ************
+.It Dv SIGUSR1 No (User defined signal 1)
+This signal is not generated by the system and is made available for
+applications to use for their own purposes.
+Many daemons use it for restart or reload requests of various types.
+The default action is to terminate the process.
+The number for
+.Dv SIGUSR1
+is\~30.
+.\" ************
+.It Dv SIGUSR2 No (User defined signal 2)
+This signal is not generated by the system and is made available for
+applications to use for their own purposes.
+The default action is to terminate the process.
+The number for
+.Dv SIGUSR2
+is\~31.
+.\" ************
+.It Dv SIGPWR No (Power fail/restart)
+This signal is notionally sent by the kernel or by a privileged
+monitor process when an external power failure is detected, and again
+when power has been restored.
+Currently
+.Nx
+does not in fact send
+.Dv SIGPWR ,
+although it is possible to prepare a custom configuration for
+.Xr powerd 8
+that does so.
+The default action is to do nothing.
+The number for
+.Dv SIGPWR
+is\~32.
+.\" ************
+.El
+.Ss Shell Interface
+Signals may be sent with the
+.Xr kill 1
+utility, either by number or the symbolic name without the ``SIG'' part.
+This utility is built into many shells to allow addressing job control
+jobs.
+.Ss Program Interface
+In C code signals may be sent using
+.Xr raise 3 ,
+.Xr kill 2 ,
+.Xr pthread_kill 3 ,
+and some other related functions.
+.Pp
+Signals may be caught or ignored using
+.Xr sigaction 2
+or the simpler
+.Xr signal 3 ,
+and blocked using
+.Xr sigprocmask 2 .
+.Sh STANDARDS
+The
+.Dv SIGTRAP ,
+.Dv SIGEMT ,
+.Dv SIGBUS ,
+.Dv SIGSYS ,
+.Dv SIGURG ,
+.Dv SIGIO ,
+.Dv SIGXCPU ,
+.Dv SIGXFSZ ,
+.Dv SIGVTALRM ,
+.Dv SIGPROF ,
+.Dv SIGWINCH ,
+and
+.Dv SIGINFO
+signals are long-existing Berkeley extensions, available on most
+.Bx Ns \-derived
+systems.
+The
+.Dv SIGPWR
+signal comes from System V.
+.Pp
+The remaining signals conform to
+.St -p1003.1-90 .
+.Sh HISTORY
+.Dv SIGPWR
+was introduced in
+.Nx 1.4 .