kill(2)
NAME
kill − send signal to a process
SYNTAX
kill(pid, sig)
int pid, sig;
DESCRIPTION
The system call kill sends the signal sig to a process specified by the process number pid. The sig a signal specified in sigvec() or it can be 0. If the sig is 0, error checking is performed but a signal is not sent. This call can be used to check the validity of pid.
The sending and receiving processes must have the same effective user ID, otherwise this call is restricted to the superuser with the exception of the signal SIGCONT. The signal SIGCONT may always be sent to a child or grandchild of the current process.
If the process number is 0, the signal is sent to all other processes in the sender’s process group.
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.
The above two options are variants of killpg(.).
If the process number is −1, and the user is the superuser, the signal is broadcast for all processes except to system processes and the process sending the signal.
Processes may send signals to themselves.
ENVIRONMENT
SYSTEM_FIVE
POSIX
When your program is compiled in the System V or POSIX environment, the following permissions checks are performed:
A signal is sent if either the real or effective uid of the sending process matches the real or saved-set-uid (as described in execve())) of the receiving process. In addition, any process can use a pid of −1 and the signal is sent to all processes subject to the above permission checks.
In POSIX mode, the pid argument is of type pid_t.
RETURN VALUE
Upon successful completion, a value of 0 is returned. Otherwise, a value of −1 is returned and errno is set to indicate the error.
DIAGNOSTICS
The kill system call fails and a signal is not sent if any of the following occur:
[EINVAL] The sig is not a valid signal number.
[EPERM] The sending process is not the superuser and its effective user id does not match the effective user ID of the receiving process.
[ESRCH] No process can be found corresponding to that specified by pid.
SEE ALSO
execve(2), getpgrp(2), getpid(2), killpg(2), sigvec(2), pause(3)
System Calls