KILLPG(2) |
Linux Programmer's Manual |
KILLPG(2) |
名前
killpg -シグナルをプロセス・グループに送る
書式
#include <signal.h>
int killpg(int
pgrp
, int
sig
);
glibc 向けの機能検査マクロの要件 (
feature_test_macros(7) 参照):
-
killpg():
-
_BSD_SOURCE || _XOPEN_SOURCE >= 500 || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
説明
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 が指定されたが、送信プロセスはプロセス・グループを持っていない。
準拠
SVr4, 4.4BSD (
killpg() は 4BSD で初めて追加された), POSIX.1-2001。
注意
BSD 系システムと System V 系システムでは、許可のチェックに様々な違いがある。
kill(2) についての POSIX の原理 (rationale) を参照すること。 POSIX で記述されていない違いとしては、返り値
EPERM がある。 BSD では「送信先プロセスの許可のチェックが 1 つでも失敗した場合は、シグナルが送信されず、
EPERM が返される」と記述されている。 POSIX では「送信先プロセスの許可のチェックが全て失敗した場合にのみ、
EPERM が返される」と記述されている。
Linux では、
killpg() はライブラリ関数として実装されており、
kill(-pgrp, sig) の呼び出しが行われる。
関連項目
getpgrp(2),
kill(2),
signal(2),
credentials(7),
capabilities(7)
この文書について
この man ページは Linux
man-pages プロジェクトのリリース 3.51 の一部である。プロジェクトの説明とバグ報告に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。