スポンサーリンク

KILL(2) FreeBSD システムコールマニュアル KILL(2)

名称

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

ライブラリ

標準 C ライブラリ (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 設定で与えられた特権、またはユーザがスーパユーザである) 必要があります。唯一の例外はシグナル SIGCONT で、これだけは呼び出し側と同 一のセッション ID を持っているプロセスに、必ず送信できます。

       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) の変種です。

戻り値

関数 kill() は、処理が成功すると値 0 を返します。そうでない場合、値 -1 が 返され、グローバル変数 errno が設定されてエラーを示します。

エラー

kill() システムコールは次の場合に処理に失敗し、シグナルは送信されません:

       [EINVAL]

sig 引数が有効なシグナル番号ではありません。

[ESRCH]
pid
で指定されたプロセスに対応するプロセスが検出できま せん。

[ESRCH]
プロセス ID は 0 として与えられたものの、送信プロセス にプロセスグループがありません。

[EPERM]
送信プロセスはスーパユーザではなく、その実効ユーザ ID が受信プロセスの実効ユーザ ID と一致しません。プロセス グループにシグナルを送信するとき、グループのメンバのい ずれかにシグナルを送信することができない場合、このエ ラーが返されます。

関連項目

getpgrp(2), getpid(2), killpg(2), sigaction(2), raise(3), init(8)

規格

kill() システムコールは ISO/IEC 9945-1:1990 (‘‘POSIX.1’’) に適合していま す。

歴史

kill() 関数は Version 7 AT&T UNIX ではじめて登場しました。

FreeBSD 10.0 April 19, 1994 FreeBSD 10.0

スポンサーリンク