killpg - システムコールの説明 - Linux コマンド集 一覧表
名前
killpg - シグナルをプロセス・グループに送る
書式
#include <signal.h>
int killpg(int
pgrp
, int
sig
);
説明
killpg
()は
sig
で指定したシグナルを
pgrp
で指定したプロセス・グループに送る。
シグナルの定義の一覧は
signal
(7) を参照のこと。
引き数
pgrp
に 0 を指定した場合には
killpg
()は送信プロセスが属しているプロセス・グループに対してシグナルを送る。
(POSIX では以下のように記述されている:
pgrp
が 1 以下である場合、動作は未定義である。)
プロセスがシグナルを送信する許可を持つためには、
プロセスが特権 (Linux では
CAP_KILL
ケーパビリティ (capability)) を持つか、
送信元プロセスの実ユーザー ID または実効ユーザー ID が
送信先プロセスの実 set-user-ID または保存 set-user-ID と
等しくなければならない。
SIGCONT の場合、送信プロセスと受信プロセスが
同じセッションに属していれば十分である。
返り値
正常終了すると 0 が返り値となる。異常終了の場合 -1 が返り値となり errno に原因コードが設定される。
エラー
- EINVAL
- sig で指定された値は無効なシグナル番号である。
- EPERM
- プロセスに何れかの送信先プロセスにシグナルを送信する許可がない。
- ESRCH
- pgrp で指定されたプロセス・グループに属するプロセスが存在しなかった。
- ESRCH
- プロセス・グループとして 0 が指定されたが、送信プロセスは プロセス・グループを持っていない。
注意
BSD 系システムと System V 系システムでは、 許可のチェックに様々な違いがある。 kill ()についての POSIX の原理 (rationale) を参照すること。 POSIX で記述されていない違いとしては、返り値 EPERM がある。 BSD では「送信先プロセスの許可のチェックが 1 つでも失敗した場合は、 シグナルが送信されず、EPERM が返される」と記述されている。 POSIX では「送信先プロセスの許可のチェックが全て失敗した場合にのみ、 EPERM が返される」と記述されている。
準拠
SVr4, 4.4BSD ( killpg ()は 4BSD で初めて追加された), POSIX.1-2001。
関連項目
getpgrp
(2),
kill
(2),
signal
(2),
capabilities
(7)