Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
KILL(2)			  FreeBSD System Calls Manual		       KILL(2)

NAME
     kill -- send signal to a process

SYNOPSIS
     #include <signal.h>

     int
     kill(pid_t	pid, int sig);

DESCRIPTION
     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.

     If	pid is greater than zero:
	     sig is sent to the	process	whose ID is equal to pid.

     If	pid is zero:
	     sig is sent to all	processes whose	group ID is equal to the
	     process group ID of the sender, and for which the process has
	     permission; this is a variant of killpg(3).

     If	pid is -1:
	     If	the user has superuser privileges, the signal is sent to all
	     processes excluding system	processes and the process sending the
	     signal.  If the user is not the superuser,	the signal is sent to
	     all processes with	the same uid as	the user excluding the process
	     sending the signal.  No error is returned if any process could be
	     signaled.

     If	pid is negative	but not	-1:
	     sig is sent to all	processes whose	process	group ID is equal to
	     the absolute value	of pid;	this is	a variant of killpg(3).

     If	the value of pid causes	sig to be sent to the calling process, either
     sig or at least one pending unblocked signal will be delivered before
     kill() returns unless sig is blocked in the calling thread, sig is	un-
     blocked in	another	thread,	or another thread is waiting for sig in
     sigwait().

     Setuid and	setgid processes are dealt with	slightly differently.  For the
     non-root user, to prevent attacks against such processes, some signal de-
     liveries 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.

RETURN VALUES
     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.

ERRORS
     kill() will fail and no signal will be sent if:

     [EINVAL]		sig is not a valid signal number.

     [ESRCH]		No process can be found	corresponding to that speci-
			fied by	pid.

     [EPERM]		The sending process is not the superuser and its ef-
			fective	user ID	does not match the effective user ID
			of the receiving process.  When	signaling a process
			group, this error is returned if none of the members
			of the group could be signaled.

SEE ALSO
     getpgrp(2), getpid(2), sigaction(2), killpg(3), raise(3)

STANDARDS
     The kill()	function conforms to IEEE Std 1003.1-2008 ("POSIX.1").

HISTORY
     The kill()	system call first appeared in Version 2	AT&T UNIX.  The	sig
     argument was introduced in	Version	4 AT&T UNIX.

FreeBSD	13.0		       February	8, 2020			  FreeBSD 13.0

NAME | SYNOPSIS | DESCRIPTION | RETURN VALUES | ERRORS | SEE ALSO | STANDARDS | HISTORY

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=kill&sektion=2&manpath=OpenBSD+6.9>

home | help