KILL(2) | System Calls Manual | KILL(2) |
kill
— send signal
to a process
#include
<signal.h>
int
kill
(pid_t
pid, int sig);
The
kill
()
function sends the signal given by sig to
pid, a process or a group of processes.
sig may be one of the signals specified in
sigaction(2) or it may be
0, in which case error checking is performed but no signal is actually sent.
This can be used to check the validity of pid.
For a process to have permission to send a signal to a process
designated by pid, the real or effective user ID of
the receiving process must match that of the sending process or the user
must have appropriate privileges (such as given by a set-user-ID program or
the user is the superuser). A single exception is the signal
SIGCONT
, which may always be sent to any process
with the same session ID as the caller.
Setuid and setgid processes are dealt with slightly differently.
For the non-root user, to prevent attacks against such processes, some
signal deliveries are not permitted and return the error
EPERM
. The following signals are allowed through to
this class of processes: SIGKILL
,
SIGINT
, SIGTERM
,
SIGSTOP
, SIGTTIN
,
SIGTTOU
, SIGTSTP
,
SIGHUP
, SIGUSR1
,
SIGUSR2
.
For compatibility with System V, if the process number is negative but not -1, the signal is sent to all processes whose process group ID is equal to the absolute value of the process number. This is a variant of killpg(3).
Upon successful completion, the value 0 is returned; otherwise the value -1 is returned and the global variable errno is set to indicate the error.
kill
() will fail and no signal will be
sent if:
EINVAL
]ESRCH
]EPERM
]The kill
() function is expected to conform
to IEEE Std 1003.1-2008
(“POSIX.1”).
The kill
() system call first appeared in
Version 3 AT&T UNIX. The
sig argument was introduced in
Version 4 AT&T UNIX.
November 2, 2015 | OpenBSD-6.0 |