diff options
Diffstat (limited to 'man/man2/kill.2')
-rw-r--r-- | man/man2/kill.2 | 165 |
1 files changed, 165 insertions, 0 deletions
diff --git a/man/man2/kill.2 b/man/man2/kill.2 new file mode 100644 index 0000000..d70feb8 --- /dev/null +++ b/man/man2/kill.2 @@ -0,0 +1,165 @@ +.\" Copyright (c) 1992 Drew Eckhardt (drew@cs.colorado.edu), March 28, 1992 +.\" +.\" SPDX-License-Identifier: Linux-man-pages-copyleft +.\" +.\" Modified by Michael Haardt <michael@moria.de> +.\" Modified by Thomas Koenig <ig25@rz.uni-karlsruhe.de> +.\" Modified 1993-07-23 by Rik Faith <faith@cs.unc.edu> +.\" Modified 1993-07-25 by Rik Faith <faith@cs.unc.edu> +.\" Modified 1995-11-01 by Michael Haardt +.\" <michael@cantor.informatik.rwth-aachen.de> +.\" Modified 1996-04-14 by Andries Brouwer <aeb@cwi.nl> +.\" [added some polishing contributed by Mike Battersby <mib@deakin.edu.au>] +.\" Modified 1996-07-21 by Andries Brouwer <aeb@cwi.nl> +.\" Modified 1997-01-17 by Andries Brouwer <aeb@cwi.nl> +.\" Modified 2001-12-18 by Andries Brouwer <aeb@cwi.nl> +.\" Modified 2002-07-24 by Michael Kerrisk <mtk.manpages@gmail.com> +.\" Added note on historical rules enforced when an unprivileged process +.\" sends a signal. +.\" Modified 2004-06-16 by Michael Kerrisk <mtk.manpages@gmail.com> +.\" Added note on CAP_KILL +.\" Modified 2004-06-24 by aeb +.\" Modified, 2004-11-30, after idea from emmanuel.colbus@ensimag.imag.fr +.\" +.TH kill 2 2024-05-02 "Linux man-pages (unreleased)" +.SH NAME +kill \- send signal to a process +.SH LIBRARY +Standard C library +.RI ( libc ", " \-lc ) +.SH SYNOPSIS +.nf +.B #include <signal.h> +.P +.BI "int kill(pid_t " pid ", int " sig ); +.fi +.P +.RS -4 +Feature Test Macro Requirements for glibc (see +.BR feature_test_macros (7)): +.RE +.P +.BR kill (): +.nf + _POSIX_C_SOURCE +.fi +.SH DESCRIPTION +The +.BR kill () +system call +can be used to send any signal to any process group or process. +.P +If \fIpid\fP is positive, then signal \fIsig\fP is sent to the +process with the ID specified by \fIpid\fP. +.P +If \fIpid\fP equals 0, then \fIsig\fP is sent to every process in the +process group of the calling process. +.P +If \fIpid\fP equals \-1, then \fIsig\fP is sent to every process +for which the calling process has permission to send signals, +except for process 1 (\fIinit\fP), but see below. +.P +If \fIpid\fP is less than \-1, then \fIsig\fP is sent to every process +in the process group whose ID is \fI\-pid\fP. +.P +If \fIsig\fP is 0, then no signal is sent, +but existence and permission checks are still performed; +this can be used to check for the existence of a process ID or +process group ID that the caller is permitted to signal. +.P +For a process to have permission to send a signal, +it must either be privileged (under Linux: have the +.B CAP_KILL +capability in the user namespace of the target process), +or the real or effective user ID of the sending process must equal +the real or saved set-user-ID of the target process. +In the case of +.BR SIGCONT , +it suffices when the sending and receiving +processes belong to the same session. +(Historically, the rules were different; see NOTES.) +.SH RETURN VALUE +On success (at least one signal was sent), zero is returned. +On error, \-1 is returned, and +.I errno +is set to indicate the error. +.SH ERRORS +.TP +.B EINVAL +An invalid signal was specified. +.TP +.B EPERM +The calling process does not have permission to send the signal +to any of the target processes. +.TP +.B ESRCH +The target process or process group does not exist. +Note that an existing process might be a zombie, +a process that has terminated execution, but +has not yet been +.BR wait (2)ed +for. +.SH STANDARDS +POSIX.1-2008. +.SH HISTORY +POSIX.1-2001, SVr4, 4.3BSD. +.SS Linux notes +Across different kernel versions, Linux has enforced different rules +for the permissions required for an unprivileged process +to send a signal to another process. +.\" In the 0.* kernels things chopped and changed quite +.\" a bit - MTK, 24 Jul 02 +In Linux 1.0 to 1.2.2, a signal could be sent if the +effective user ID of the sender matched effective user ID of the target, +or the real user ID of the sender matched the real user ID of the target. +From Linux 1.2.3 until 1.3.77, a signal could be sent if the +effective user ID of the sender matched either the real or effective +user ID of the target. +The current rules, which conform to POSIX.1, were adopted +in Linux 1.3.78. +.SH NOTES +The only signals that can be sent to process ID 1, the +.I init +process, are those for which +.I init +has explicitly installed signal handlers. +This is done to assure the +system is not brought down accidentally. +.P +POSIX.1 requires that \fIkill(\-1,sig)\fP send \fIsig\fP +to all processes that the calling process may send signals to, +except possibly for some implementation-defined system processes. +Linux allows a process to signal itself, but on Linux the call +\fIkill(\-1,sig)\fP does not signal the calling process. +.P +POSIX.1 requires that if a process sends a signal to itself, +and the sending thread does not have the signal blocked, +and no other thread +has it unblocked or is waiting for it in +.BR sigwait (3), +at least one +unblocked signal must be delivered to the sending thread before the +.BR kill () +returns. +.SH BUGS +In Linux 2.6 up to and including Linux 2.6.7, +there was a bug that meant that when sending signals to a process group, +.BR kill () +failed with the error +.B EPERM +if the caller did not have permission to send the signal to \fIany\fP (rather +than \fIall\fP) of the members of the process group. +Notwithstanding this error return, the signal was still delivered +to all of the processes for which the caller had permission to signal. +.SH SEE ALSO +.BR kill (1), +.BR _exit (2), +.BR pidfd_send_signal (2), +.BR signal (2), +.BR tkill (2), +.BR exit (3), +.BR killpg (3), +.BR sigqueue (3), +.BR capabilities (7), +.BR credentials (7), +.BR signal (7) |