kill または killpg サブルーチン

目的

プロセスまたはプロセスのグループにシグナルを送信します。

ライブラリー

標準 C ライブラリー (libc.a)

構文

#include <sys/types.h>
#include <signal.h>
int kill(
Process,
Signal)
pid_t Process;
int Signal;
killpg(
ProcessGroup, Signal)
int ProcessGroup, Signal;

説明

強制終了 サブルーチンは、 シグナル パラメーターで指定されたシグナルを、 処理 パラメーターで指定されたプロセスまたはプロセス・グループに送信します。

シグナルを別のプロセスに送信するには、送信プロセスの実ユーザー ID または実効ユーザー ID が受信プロセスの実ユーザー ID または実効ユーザー ID と一致している必要があり、呼び出しプロセスが root ユーザー権限を持っている必要があります。

プロセス ID が 0 および 1 のプロセスは特殊なプロセスであり、ここではそれぞれ proc0 および proc1と呼ばれることがあります。

プロセスは自分自身にシグナルを送信することができます。

注: シグナルの送信は、操作が成功したことを意味するものではありません。 すべてのシグナル操作は、システム上で適用される各アクセス制御ポリシーによって規定されたアクセス検査に合格する必要があります。

BSD 互換性のために、以下のインターフェースが提供されています。

killpg(ProcessGroup, Signal)
int ProcessGroupSignal;

このインターフェースは、以下と同等です。

if (ProcessGroup < 0)
{
  errno = ESRCH;
  return (-1);
}
return (kill(-ProcessGroup, Signal));

パラメーター

項目 説明
プロセス プロセスまたはプロセスのグループの ID を指定します。

処理 パラメーターが 0 より大きい場合、 シグナル パラメーターによって指定されたシグナルは、 処理 パラメーターによって識別されるプロセスに送信されます。

処理 パラメーターが 0 の場合、 シグナル パラメーターによって指定されたシグナルは、送信側のプロセス・グループ ID と一致するプロセス・グループ ID を持つすべてのプロセス ( proc0 および proc1を除く) に送信されます。

Processパラメータの値が-1以外の負の値であり、呼び出し元のプロセスがシグナルを送るプロセスのアクセス・チェックをパスした場合、Signalパラメータで指定されたシグナルが、proc0proc11を除くすべてのプロセスに送られる。 呼び出しプロセスのユーザーIDがrootユーザー権限を持っている場合、proc0proc11を除くすべてのプロセスがシグナルされる。

Processパラメータの値が-1以外の負の値である場合、Signalパラメータで指定された信号は、Processパラメータの絶対値に等しいプロセスグループIDを持つすべてのプロセスに送信される。

Processパラメータの値が-11の場合、Signalパラメータで指定されたシグナルは、そのプロセスがそのシグナルを送信する権限を持っているすべてのプロセスに送信される。

SIGNAL シグナルを指定します。 Signal パラメーターが NULL 値の場合、エラー検査は実行されますが、シグナルは送信されません。 このパラメーターは、 処理 パラメーターの妥当性を検査するために使用されます。
ProcessGroup プロセス・グループを指定します。

戻り値

正常終了すると、 強制終了 サブルーチンは値 0 を戻します。 そうでない場合は-1が返され、エラーを示すerrnoグローバル変数が設定される。

エラー・コード

以下の 1 つ以上が該当する場合、 強制終了 サブルーチンは失敗し、シグナルは送信されません。

項目 説明
EINVAL シグナル パラメーターが有効なシグナル番号ではありません。
EINVAL シグナル パラメーターは シグキルSIGSTOP (停止)_ 翻訳不要 _SIGTSTP、または SIGCONT (信号) シグナルを指定し、 処理 パラメーターは 1 (proc1) です。
ESRCH 処理 パラメーターで指定されたプロセスに対応するプロセスが見つかりません。
EPERM 実ユーザー ID または実効ユーザー ID が受信プロセスの実ユーザー ID または実効ユーザー ID と一致しないか、あるいは呼び出しプロセスに root ユーザー権限がありません。