Movatterモバイル変換


[0]ホーム

URL:


man7.org > Linux >man-pages

Linux/UNIX system programming training


kill(2) — Linux manual page

NAME |LIBRARY |SYNOPSIS |DESCRIPTION |RETURN VALUE |ERRORS |STANDARDS |HISTORY |NOTES |BUGS |SEE ALSO |COLOPHON

kill(2)                    System Calls Manualkill(2)

NAME        top

       kill - send signal to a process

LIBRARY        top

       Standard C library (libc,-lc)

SYNOPSIS        top

#include <signal.h>int kill(pid_tpid, intsig);   Feature Test Macro Requirements for glibc (seefeature_test_macros(7)):kill():           _POSIX_C_SOURCE

DESCRIPTION        top

       Thekill() system call can be used to send any signal to any       process group or process.       Ifpid is positive, then signalsig is sent to the process with       the ID specified bypid.       Ifpid equals 0, thensig is sent to every process in the process       group of the calling process.       Ifpid equals -1, thensig is sent to every process for which the       calling process has permission to send signals, except for process       1 (init), but see below.       Ifpid is less than -1, thensig is sent to every process in the       process group whose ID is-pid.       Ifsig 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 theCAP_KILLcapability 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 ofSIGCONT, it       suffices when the sending and receiving processes belong to the       same session.  (Historically, the rules were different; see       HISTORY.)

RETURN VALUE        top

       On success, zero is returned.  If signals were sent to a process       group, success means that at least one signal was delivered.  On       error, -1 is returned, anderrno is set to indicate the error.

ERRORS        top

EINVALAn invalid signal was specified.EPERMThe calling process does not have permission to send the              signal to any of the target processes.ESRCHThe target 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 beenwait(2)ed              for.

STANDARDS        top

       POSIX.1-2008.

HISTORY        top

       POSIX.1-2001, SVr4, 4.3BSD.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 Linux 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 Linux 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 Linux       1.3.78.

NOTES        top

       The only signals that can be sent to process ID 1, theinit       process, are those for whichinit has explicitly installed signal       handlers.  This is done to assure the system is not brought down       accidentally.       POSIX.1 requires thatkill(-1,sig) sendsig 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 callkill(-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 insigwait(3), at       least one unblocked signal must be delivered to the sending thread       before thekill() returns.

BUGS        top

       In Linux 2.6 up to and including Linux 2.6.7, there was a bug that       meant that when sending signals to a process group,kill() failed       with the errorEPERMif the caller did not have permission to send       the signal toany (rather thanall) 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        top

kill(1),_exit(2),pidfd_send_signal(2),signal(2),tkill(2),exit(3),killpg(3),sigqueue(3),capabilities(7),credentials(7),signal(7)

COLOPHON        top

       This page is part of theman-pages (Linux kernel and C library       user-space interface documentation) project.  Information about       the project can be found at        ⟨https://www.kernel.org/doc/man-pages/⟩.  If you have a bug report       for this manual page, see       ⟨https://git.kernel.org/pub/scm/docs/man-pages/man-pages.git/tree/CONTRIBUTING⟩.       This page was obtained from the tarball man-pages-6.15.tar.gz       fetched from       ⟨https://mirrors.edge.kernel.org/pub/linux/docs/man-pages/⟩ on       2025-08-11.  If you discover any rendering problems in this HTML       version of the page, or you believe there is a better or more up-       to-date source for the page, or you have corrections or       improvements to the information in this COLOPHON (which isnot       part of the original manual page), send a mail to       man-pages@man7.orgLinux man-pages 6.15            2025-05-17kill(2)

Pages that refer to this page:capsh(1)fuser(1)kill(1@@coreutils)kill(1)kill(1@@procps-ng)killall(1)pgrep(1)skill(1)strace(1)clone(2)_exit(2)F_GETSIG(2const)getpid(2)getrlimit(2)pause(2)pidfd_open(2)pidfd_send_signal(2)ptrace(2)rt_sigqueueinfo(2)setfsgid(2)setfsuid(2)sigaction(2)signal(2)sigpending(2)sigprocmask(2)sigreturn(2)sigsuspend(2)sigwaitinfo(2)syscalls(2)tkill(2)wait(2)gsignal(3)id_t(3type)killpg(3)psignal(3)pthread_kill(3)raise(3)sd_event_add_child(3)sigpause(3)sigqueue(3)sigset(3)sigvec(3)systemd.exec(5)systemd.kill(5)capabilities(7)cpuset(7)credentials(7)pid_namespaces(7)pthreads(7)signal(7)signal-safety(7)systemd-coredump(8)



HTML rendering created 2025-09-06 byMichael Kerrisk, author ofThe Linux Programming Interface.

For details of in-depthLinux/UNIX system programming training courses that I teach, lookhere.

Hosting byjambit GmbH.

Cover of TLPI


[8]ページ先頭

©2009-2025 Movatter.jp