Seth Woolley's Man Viewer

Manual for kill - man 2 kill

([section] manual, -k keyword, -K [section] search, -f whatis)
man plain no title

KILL(2)                    Linux Programmer's Manual                   KILL(2)

       kill(1,2,1 builtins) - send(2,n) signal(2,7) to a process

       #include <sys/types.h>
       #include <signal.h>

       int kill(1,2,1 builtins)(pid_t pid, int sig);

       The  kill(1,2,1 builtins)  system  call  can  be used to send(2,n) any signal(2,7) to any process
       group or process.

       If pid is positive, then signal(2,7) sig is sent to pid.

       If pid equals 0, then sig is sent to every process in(1,8) the process group
       of the current process.

       If  pid equals -1, then sig is sent to every process except for process
       1 (init), but see below.

       If pid is less(1,3) than -1, then sig  is  sent  to  every  process  in(1,8)  the
       process group -pid.

       If  sig  is 0, then no signal(2,7) is sent, but error(8,n) checking is still per-

       For a process to have permission to send(2,n) a signal(2,7)  it  must  either  be
       privileged  (under Linux: have the 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.

       On success (at least one signal(2,7) was sent), zero is returned.  On error(8,n),
       -1 is returned, and errno is set(7,n,1 builtins) appropriately.

       EINVAL An invalid signal(2,7) was specified.

       EPERM  The  process  does not have permission to send(2,n) the signal(2,7) to any
              of the target processes.

       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 wait()ed for.

       It is impossible to send(2,n) a signal(2,7) to task number one, the init process,
       for  which  it  has  not  installed  a signal(2,7) handler.  This is done to
       assure the system is not brought down accidentally.

       POSIX 1003.1-2001 requires that kill(1,2,1 builtins)(-1,sig) send(2,n) sig to all  processes
       that  the current process may send(2,n) signals to, except possibly for some
       implementation-defined system processes.  Linux  allows  a  process  to
       signal(2,7)  itself,  but on Linux the call kill(1,2,1 builtins)(-1,sig) does not signal(2,7) the
       current process.

       POSIX 1003.1-2003 requires that if(3,n) a process sends a signal(2,7) to  itself,
       and  that process does not have the signal(2,7) blocked, and no other thread
       has it unblocked or is waiting  for  it  in(1,8)  sigwait(),  at  least  one
       unblocked  signal(2,7)  must  be  delivered to the sending thread before the
       call of kill(1,2,1 builtins)() returns.

       Across different kernel versions, Linux has  enforced  different  rules
       for the permissions required for an unprivileged process to send(2,n) a sig-
       nal(2,7) to another process.  In kernels 1.0 to 1.2.2,  a  signal(2,7)  could  be
       sent  if(3,n)  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(2,7) could be sent if(3,n)
       the effective user ID of the sender matched either the real  or  effec-
       tive  user  ID  of  the  receiver.  The current rules, which conform to
       POSIX 1003.1-2001, were adopted in(1,8) kernel 1.3.78.

       SVr4, SVID, POSIX.1, X/OPEN, BSD 4.3, POSIX 1003.1-2001

       _exit(2), killpg(2,3)(2),  signal(2,7)(2),  tkill(1,2)(2),  exit(3,n,1 builtins)(3),  capabilities(7),

Linux 2.6.7                       2004-06-24                           KILL(2)

References for this manual (incoming links)