killpg

Autres langues

Langue: ja

Version: 2004-06-21 (mandriva - 01/05/08)

Autres sections - même nom

Section: 2 (Appels système)

名前

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 が指定されたが、送信プロセスは プロセス・グループを持っていない。

準拠

SVr4, 4.4BSD (killpg() は 4BSD で初めて追加された), POSIX.1-2001。

注意

BSD 系システムと System V 系システムでは、 許可のチェックに様々な違いがある。 kill(2) についての POSIX の原理 (rationale) を参照すること。 POSIX で記述されていない違いとしては、返り値 EPERM がある。 BSD では「送信先プロセスの許可のチェックが 1 つでも失敗した場合は、 シグナルが送信されず、EPERM が返される」と記述されている。 POSIX では「送信先プロセスの許可のチェックが全て失敗した場合にのみ、 EPERM が返される」と記述されている。

関連項目

getpgrp(2), kill(2), signal(2), capabilities(7)