kill()

Updated: October 28, 2024

Send a signal to a process or a group of processes

Synopsis:

#include <sys/types.h>
#include <signal.h>

int kill( pid_t pid, 
          int sig );

Arguments:

pid
The ID of the process or process group that you want to send a signal to:
If pid is: Then sig is sent to:
> 0 The single process with that process ID
0 All processes that are in the same process group as the sending process
-1 (QNX Neutrino 7.0 or later) All processes (excluding those in process group 1) for which the process has permission to send that signal
< -1 Every process that's a member of the process group -pid
sig
Zero, or the signal that you want to send. For a complete list of signals, see POSIX and QNX Neutrino signals in the documentation for SignalAction().

If the signal terminates a process, the cleanup of the terminated process occurs by default at the priority of the thread that sent the signal. As a QNX Neutrino extension, if you OR the SIG_TERMER_NOINHERIT flag (defined in <signal.h>) into sig, the cleanup occurs at the priority of the thread that received the signal.

Library:

libc

Use the -l c option to qcc to link against this library. This library is usually included automatically.

Description:

The kill() function sends the signal sig to a process or group of processes specified by pid. If sig is zero, no signal is sent, but the pid is still checked for validity.

For a process to have permission to send a signal to a process, either:

If the value of pid causes sig to be generated for the sending process, and if sig isn't blocked, either sig or at least one pending unblocked signal is delivered before the kill function returns.

This call doesn't block. However, in the network case, lower priority threads may run.

Returns:

Zero, or -1 if an error occurs (errno is set).

Errors:

EAGAIN
Insufficient system resources are available to deliver the signal.
EINVAL
The sig is invalid.
EPERM
The process doesn't have permission to send this signal to any receiving process; procmgr_ability().
ESRCH
The given pid doesn't exist.

Examples:

See sigprocmask().

Classification:

POSIX 1003.1

Safety:  
Cancellation point No
Interrupt handler No
Signal handler Yes
Thread Yes
  翻译: