KILL(2)

名前
kill - プロセスにシグナルを送る。

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

int kill(pid_t pid, int sig);

説明
システムコールの kill は任意のプロセス・グループもしくはプロセスにシグナルを 送るのに使われる。

pidに正数を指定した場合、sigで指定したシグナルが pidのプロセスに送られる。

pidに 0 を指定した場合、sigで指定したシグナルが 送ろうとしたプロセスと同じプロセスグループに属するすべての プロセスに送られる。

pidに-1を指定した場合、sigで指定したシグナルが 最初のプロセス(訳注:init)を除くproc table内の大きな番号から 小さな番号の順ですべてのプロセスへ送られる。

pidに-1より小さな値を指定した場合、-pidの プロセス・グループに属するすべてのプロセスにsigで 指定したシグナルが送られる。

sigに 0 を指定した場合、シグナルは送られないがエラーのチェック は行われる。

返り値
正常終了すると 0 が返り値となる。異常終了の場合 -1 が返り値となり、 errno に適切な原因コードが設定される。

エラー

EINVAL
    無効なシグナルを指定した。

ESRCH
    指定したプロセスまたはプロセスグループが存在しなかった。 指定したプロセスが存在しても zombie プロセスかもしれない。 zombie プロセスというのは、親プロセスにより wait() 処理をうけず に終了したようなプロセスの事である。

EPERM
    プロセスが、受信するプロセスのいずれに対しても シグナルを送る許可を持っていない。 プロセス pid にシグナルを送ろうとするプロセスはルートの特権を持っているか、 送る側の実または実効ユーザーID と受ける側の実または退避済みの 設定されたユーザーID が等しい必要がある。

バグ
タスク番号 1 の init プロセスには、シグナルハンドラーが設定 されていないのでシグナルを送る事はできない。 これは誤ってシステムをダウンさせないようにするためである。

準拠
SVr4, SVID, POSIX.1, X/OPEN, BSD 4.3

関連項目
_exit(2), exit(3), signal(2), signal(7)