NAME
kill - send signal to a process
SYNOPSIS
#include <sys/types.h> #include <signal.h> int kill(pid_t pid, int sig); Feature Test Macro Requirements for glibc (see feature_test_macros(7)): kill(): _POSIX_C_SOURCE
DESCRIPTION
The kill() system call can be used to send any signal to any process group or process. If pid is positive, then signal sig is sent to the process with the ID specified by pid. If pid equals 0, then sig is sent to every process in the process group of the calling process. If pid equals -1, then sig is sent to every process for which the calling process has permission to send signals, except for process 1 (init), but see below. If pid is less than -1, then sig is sent to every process in the process group whose ID is -pid. If sig is 0, then no signal is sent, but existence and permission checks are still performed; this can be used to check for the existence of a process ID or process group ID that the caller is permitted to signal. For a process to have permission to send a signal, it must either be privileged (under Linux: have the CAP_KILL capability in the user namespace of the target process), 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. (Historically, the rules were different; see NOTES.)
RETURN VALUE
On success (at least one signal was sent), zero is returned. On error, -1 is returned, and errno is set appropriately.
ERRORS
EINVAL An invalid signal was specified. EPERM The process does not have permission to send the signal to any of the target processes. ESRCH The process or process group does not exist. Note that an existing process might be a zombie, a process that has terminated execution, but has not yet been wait(2)ed for.
CONFORMING TO
POSIX.1-2001, POSIX.1-2008, SVr4, 4.3BSD.
NOTES
The only signals that can be sent to process ID 1, the init process, are those for which init has explicitly installed signal handlers. This is done to assure the system is not brought down accidentally. POSIX.1 requires that kill(-1,sig) send sig to all processes that the calling 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 kill(-1,sig) does not signal the calling process. POSIX.1 requires that if a process sends a signal to itself, and the sending thread does not have the signal blocked, and no other thread has it unblocked or is waiting for it in sigwait(3), at least one unblocked signal must be delivered to the sending thread before the kill() returns. Linux notes 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 kernels 1.0 to 1.2.2, a signal could be sent if the effective user ID of the sender matched effective user ID of the target, or the real user ID of the sender matched the real user ID of the target. 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 target. The current rules, which conform to POSIX.1, were adopted in kernel 1.3.78.
BUGS
In 2.6 kernels up to and including 2.6.7, there was a bug that meant that when sending signals to a process group, kill() failed with the error EPERM if the caller did not have permission to send the signal to any (rather than all) of the members of the process group. Notwithstanding this error return, the signal was still delivered to all of the processes for which the caller had permission to signal.
SEE ALSO
kill(1), _exit(2), signal(2), tkill(2), exit(3), killpg(3), sigqueue(3), capabilities(7), credentials(7), signal(7)
COLOPHON
This page is part of release 4.09 of the Linux man-pages project. A description of the project, information about reporting bugs, and the latest version of this page, can be found at https://www.kernel.org/doc/man-pages/.
More Linux Commands
manpages/cscope.1.html
cscope(1) interactively examine a C program - Linux man page
cscope is an interactive, screen-oriented tool that allows the user to browse through C source files for specified elements of code. By default, cscope examines
manpages/nepomukservicestub.8.html
nepomukservicestub(8) - KDE wrapper around Nepomuk service p
nepomukservicestub runs a Nepomuk service plugin in its own process. It is used by nepomukserver to run all configured Nepomuk services. GENERIC OPTIONS --autho
manpages/git-hash-object.1.html
git-hash-object(1) - Compute object ID and optionally create
Computes the object ID value for an object with specified type with the contents of the named file (which can be outside of the work tree), and optionally write
manpages/Mail::SPF::Mech::MX.3pm.html
Mail::SPF::Mech::MX(3pm) - SPF record "mx" mechanism class
An object of class Mail::SPF::Mech::MX represents an SPF record mechanism of type mx. Constructors The following constructors are provided: new(%options): retur
manpages/deltainfoxml2solv.1.html
deltainfoxml2solv(1) convert rpmmd's deltainfo format into a
The deltainfoxml2solv tool reads rpm-mds deltainfo.xml data from stdin, and writes it as solv file to standard output. Some distributions name the input prestod
manpages/SDL_SetModState.3.html
SDL_SetModState(3) - Set the current key modifier state.....
The inverse of SDL_GetModState, SDL_SetModState allows you to impose modifier key states on your application. Simply pass your desired modifier states into mods
manpages/libcurl-errors.3.html
libcurl-errors(3) - error codes in libcurl - Linux man page
This man page includes most, if not all, available error codes in libcurl. Why they occur and possibly what you can do to fix the problem are also included. CUR
manpages/fixcvsdiff.1.html
fixcvsdiff(1) - fix problematic diff files - Linux man page
fixcvsdiff modifies diff files created from the cvs diff command, where files have been added or removed. CVS tends to create diff files that patch(1) mis-inter
manpages/orbd-java-1.6.0-openjdk.1.html
orbd-java-1.6.0-openjdk(1) - The Object Request Broker Daemo
orbd-java-1.6.0-openjdk.1 - The Server Manager included with the orbd tool is used to enable clients to transparently locate and invoke persistent objects on se
manpages/check_db.8.html
check_db(8) - Check the integrity of a list's database file
check_db checks the integrity of a lists config.db and config.db.last database files. AUTHOR Author of Mailman is the Mailman Cabal, see http://www.list.org/ fo
manpages/XAllocNamedColor.3.html
XAllocNamedColor(3) - allocate and free colors (Man Page)...
The XAllocColor function allocates a read-only colormap entry corresponding to the closest RGB value supported by the hardware. XAllocColor returns the pixel va
manpages/glRasterPos2d.3gl.html
glRasterPos2d(3gl) - specify the raster position for pixel o
The GL maintains a 3D position in window coordinates. This position, called the raster position, is used to position pixel and bitmap write operations. It is ma
