EN JA
KILL(2)
KILL(2) FreeBSD System Calls Manual KILL(2)

名称

killプロセスにシグナルを送信する

ライブラリ

Standard C Library (libc, -lc)

書式

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

int
kill( pid_t pid, int sig);

解説

kill() システムコールは、 sig によって与えられたシグナルをプロセスまたはプロセスグループ、 pid に送信します。 sig 引数は、 sigaction(2) に明記されたシグナルの 1 つであるか、または 0 になります、0 の場合に、エラーチェックが実行されますが、シグナルは、実際に送信されません。 pid の有効性をチェックするために、これを使用することができます。

pid によって指定されたプロセスにシグナルを送信するパーミッションがあるプロセスに対して、ユーザは、スーパユーザでなければならないか、または受信しているプロセスの実ユーザ ID または保存されたユーザ ID は、送信しているプロセスの実ユーザ ID か、または実効ユーザ ID にマッチしなければなりません。 1 つの例外は、送信側と同一のセッション ID がある、あらゆるプロセスに、常に送信される、シグナル SIGCONT です。さらに、 security.bsd.conservative_signals sysctl が 1 に設定されるなら、ユーザは、スーパユーザではなく、受信側は、 set-uid であり、次に、ジョブ制御と端末制御シグナルのみが、 (特に、SIGKILL、SIGINT、SIGTERM、SIGALRM、SIGSTOP、SIGTTIN、SIGTTOU、 SIGTSTP、SIGHUP、SIGUSR1、SIGUSR2 のみ) 送信されます。

pid が 0 より大きいなら:
sig シブナルは、ID が pid と等しいプロセスに送信されます。
pid が 0 であるなら:
sig シグナルは、グループ ID が送信側のプロセスグループ ID と等しく、それに対して、プロセスにパーミッションある、すべてのプロセスに送信されます。これは、 killpg(2) 変異型です。
pid が -1 であるなら:
ユーザにスーパユーザの特権があるなら、シグナルは、 ( P_SYSTEM フラグの設定がある) システムプロセス、ID 1 があるプロセス (通常 init(8)) とシグナルを送信しているプロセスを除いて、すべてのプロセスに送信されます。ユーザがスーパユーザでないなら、シブナルは、シグナルを送信しているプロセスを除いて、ユーザと同じ UID があるすべてのプロセスに送信されます。あらゆるプロセスにシグナルが送信されたなら、エラーは、返されません。

System V との互換性のために、プロセス番号が -1 ではなく負であるなら、シグナルは、プロセスグループ ID がプロセス番号の絶対値と等しいすべてのプロセスに送信さられます。これは、 killpg(2) 変異型です。

戻り値

The kill() function returns the value 0 if successful; otherwise the value -1 is returned and the global variable errno is set to indicate the error.

エラー

kill() システムコールは、次の場合に失敗し、シグナルは、送信されません:
[ EINVAL]
sig 引数が有効なシグナル番号ではありません。
[ ESRCH]
pid で指定されたプロセスまたはプロセスグループに対応するものが見つかりません。
[ EPERM]
送信プロセスは、受信しているプロセスに sig を送信するパーミッションがありません。

規格

kill() システムコールは、 IEEE Std 1003.1-1990 (“POSIX.1”) に適合するはずです。

歴史

kill() 関数は、 Version 7 AT&T UNIX で登場しました。
March 15, 2012 FreeBSD