Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

execve(2)

getpgrp(2)

getpid(2)

killpg(2)

sigvec(2)

pause(3)

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

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026