tail head cat sleep
QR code linking to this page

manページ  — KILL

名称

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 設定で与えられた特権、 またはユーザがスーパユーザである) 必要があります。 唯一の例外はシグナル SIGCONT で、これだけは呼び出し側と同一のセッション ID を 持っているプロセスに、必ず送信できます。
pid, No, , 0, より大きい場合:
  sig シグナルは ID が pid に等しいプロセスに送信されます。
pid, No, , 0, の場合:
  sig シグナルはグループ ID が送信側のプロセスグループ ID と等しく、それについて プロセスがパーミッションを持っているすべてのプロセスに送信されます。 これは killpg(2) の変種です。
pid, No, , -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 で指定されたプロセスに対応するプロセスが検出できません。
[ESRCH]
  プロセス ID は 0 として与えられたものの、 送信プロセスにプロセスグループがありません。
[EPERM]
  送信プロセスはスーパユーザではなく、その実効ユーザ ID が受信プロセスの 実効ユーザ ID と一致しません。 プロセスグループにシグナルを送信するとき、グループのメンバの いずれかにシグナルを送信することができない場合、このエラーが返されます。

関連項目

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

規格

kill() システムコールは IEEE Std 1003.1-90 ("POSIX.1") に適合しています。

歴史

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

KILL (2) April 19, 1994

tail head cat sleep
QR code linking to this page


このマニュアルページサービスについてのご意見は Ben Bullock にお知らせください。 Privacy policy.

VI = Virtually Incomprehensible.