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.

As soon as we started programming, we found to our surprise that it wasn't as easy to get programs right as we had thought. Debugging had to be discovered. I can remember the exact instant when I realized that a large part of my life from then on was going to be spent in finding mistakes in my own programs.
— Maurice Wilkes