summaryrefslogtreecommitdiffstats
path: root/man2/kill.2
diff options
context:
space:
mode:
Diffstat (limited to 'man2/kill.2')
-rw-r--r--man2/kill.2140
1 files changed, 140 insertions, 0 deletions
diff --git a/man2/kill.2 b/man2/kill.2
new file mode 100644
index 000000000..bfff57ada
--- /dev/null
+++ b/man2/kill.2
@@ -0,0 +1,140 @@
+.\" Hey Emacs! This file is -*- nroff -*- source.
+.\"
+.\" Copyright (c) 1992 Drew Eckhardt (drew@cs.colorado.edu), March 28, 1992
+.\"
+.\" 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 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 <mtk16@ext.canterbury.ac.nz>
+.\" Added note on historical rules enforced when an unprivileged process
+.\" sends a signal.
+.\" Modified 2004-06-16 by Michael Kerrisk <mtk16@ext.canterbury.ac.nz>
+.\" Added note on CAP_KILL
+.\" Modified 2004-06-24 by aeb
+.\"
+.TH KILL 2 2004-06-24 "Linux 2.6.7" "Linux Programmer's Manual"
+.SH NAME
+kill \- send signal to a process
+.SH SYNOPSIS
+.nf
+.B #include <sys/types.h>
+.br
+.B #include <signal.h>
+.sp
+.BI "int kill(pid_t " pid ", int " sig );
+.fi
+.SH DESCRIPTION
+The
+.B kill
+system call
+can be used to send any signal to any process group or process.
+.PP
+If \fIpid\fP is positive, then signal \fIsig\fP is sent to \fIpid\fP.
+.PP
+If \fIpid\fP equals 0, then \fIsig\fP is sent to every process in the
+process group of the current process.
+.PP
+If \fIpid\fP equals \-1, then \fIsig\fP is sent to every process except
+for process 1 (init), but see below.
+.PP
+If \fIpid\fP is less than \-1, then \fIsig\fP is sent to every process
+in the process group \fI\-pid\fP.
+.PP
+If \fIsig\fP is 0, then no signal is sent, but error checking is still
+performed.
+
+For a process to have permission to send a signal
+it must either be privileged (under Linux: have the
+.B CAP_KILL
+capability), 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 SIGCONT it suffices when the sending and receiving
+processes belong to the same session.
+.SH "RETURN VALUE"
+On success (at least one signal was sent), zero is returned.
+On error, \-1 is returned, and
+.I errno
+is set appropriately.
+.SH ERRORS
+.TP
+.B EINVAL
+An invalid signal was specified.
+.TP
+.B EPERM
+The process does not have permission to send the signal
+to any of the target processes.
+.TP
+.B ESRCH
+The pid or process group does not exist.
+Note that an existing process might be a zombie,
+a process which already committed termination, but
+has not yet been \fBwait()\fPed for.
+.SH NOTES
+It is impossible to send a signal to task number one, the init process, for
+which it has not installed a signal handler. This is done to assure the
+system is not brought down accidentally.
+.LP
+POSIX 1003.1-2001 requires that \fIkill(-1,sig)\fP send \fIsig\fP
+to all processes that the current 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 current process.
+.LP
+POSIX 1003.1-2003 requires that if a process sends a signal to itself,
+and that process does not have the signal blocked, and no other thread
+has it unblocked or is waiting for it in \fIsigwait()\fP, at least one
+unblocked signal must be delivered to the sending thread before the
+call of \fIkill()\fP returns.
+.SH "LINUX HISTORY"
+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 kernels 1.0 to 1.2.2, a signal could be sent if the
+effective user ID of the sender matched that of the receiver,
+or the real user ID of the sender matched that of the receiver.
+From kernel 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 receiver.
+The current rules, which conform to POSIX 1003.1-2001, were adopted
+in kernel 1.3.78.
+.SH "CONFORMING TO"
+SVr4, SVID, POSIX.1, X/OPEN, BSD 4.3, POSIX 1003.1-2001
+.SH "SEE ALSO"
+.BR _exit (2),
+.BR killpg (2),
+.BR signal (2),
+.BR tkill (2),
+.BR exit (3),
+.BR capabilities (7),
+.BR signal (7)