名 前
kill − プ ロ セ ス に シ グ ナ ル を 送 る
書 式
#include
<sys/types.h>
#include <signal.h>
int kill(pid_t pid, int sig);
glibc 向 け の 機 能 検 査 マ ク ロ の 要 件 (feature_test_macros(7) 参 照 ):
kill(): _POSIX_C_SOURCE >= 1 || _XOPEN_SOURCE || _POSIX_SOURCE
説 明
シ ス テ ム コ ー ル の kill() は 、 任 意 の プ ロ セ ス グ ル ー プ も し く は プ ロ セ ス に シ グ ナ ル を 送 る の に 使 わ れ る 。
pid に 正 の 値 を 指 定 し た 場 合 、 シ グ ナ ル sig が pid で 指 定 さ れ た ID を 持 つ プ ロ セ ス に 送 ら れ る 。
pid に 0 を 指 定 し た 場 合 、 呼 び 出 し 元 の プ ロ セ ス の プ ロ セ ス グ ル ー プ に 属 す る す べ て の プ ロ セ ス に sig で 指 定 し た シ グ ナ ル が 送 ら れ る 。
pid に −1 を 指 定 し た 場 合 、 sig で 指 定 し た シ グ ナ ル が 、 呼 び 出 し 元 の プ ロ セ ス が シ グ ナ ル を 送 る 許 可 を 持 つ 全 て の プ ロ セ ス に 送 ら れ る 。 但 し 、 プ ロ セ ス 番 号 1 (init) へ は シ グ ナ ル は 送 ら れ な い 。 以 下 の 関 連 部 分 も 参 照 の こ と 。
pid に −1 よ り 小 さ な 値 を 指 定 し た 場 合 、 ID が −pid の プ ロ セ ス グ ル ー プ に 属 す る す べ て の プ ロ セ ス に sig で 指 定 し た シ グ ナ ル が 送 ら れ る 。
sig に 0 を 指 定 し た 場 合 、 シ グ ナ ル は 送 ら れ な い が 、 エ ラ ー の チ ェ ッ ク は 行 わ れ る 。 こ れ を 使 っ て 、 プ ロ セ ス ID や プ ロ セ ス グ ル ー プ ID の 存 在 確 認 を 行 う こ と が で き る 。 プ ロ セ ス が シ グ ナ ル を 送 信 す る 許 可 を 持 つ た め に は 、 プ ロ セ ス が 特 権 (Linux で は CAP_KILL ケ ー パ ビ リ テ ィ (capability)) を 持 つ か 、 送 信 元 プ ロ セ ス の 実 ユ ー ザ ー ID ま た は 実 効 ユ ー ザ ー ID が 送 信 先 プ ロ セ ス の 実 set−user−ID ま た は 保 存 set−user−ID と 等 し く な け れ ば な ら な い 。 SIGCONT の 場 合 、 送 信 プ ロ セ ス と 受 信 プ ロ セ ス が 同 じ セ ッ シ ョ ン に 属 し て い れ ば 十 分 で あ る 。 (過 去 に は 、 ル ー ル は 違 っ て い た ; 「 注 意 」 の 節 を 参 照 。 )
返 り 値
成 功 し た 場 合 (少 な く と も 一 つ の シ グ ナ ル が 送 信 さ れ た 場 合 )、 0 が 返 さ れ る 。 エ ラ ー の 場 合 −1 が 返 さ れ 、 errno が 適 切 に 設 定 さ れ る 。
エ ラ ー
EINVAL 無 効 な シ グ ナ ル を 指 定 し た 。 | |
EPERM プ ロ セ ス が 、 受 信 す る プ ロ セ ス の い ず れ に 対 し て も シ グ ナ ル を 送 る 許 可 を 持 っ て い な い 。 | |
ESRCH 指 定 し た プ ロ セ ス ま た は プ ロ セ ス グ ル ー プ が 存 在 し な か っ た 。 ゾ ン ビ プ ロ セ ス は 存 在 す る プ ロ セ ス と し て み な さ れ る 。 ゾ ン ビ プ ロ セ ス と は す で に 処 理 は 終 了 し て い る が 、 親 プ ロ セ ス に よ る |
wait() 処 理 が 行 わ れ て い な い プ ロ セ ス の こ と で あ る 。
準 拠
SVr4, 4.3BSD, POSIX.1−2001.
注 意
プ ロ セ ス 番 号 1 の init プ ロ セ ス に 送 る こ と が で き る シ グ ナ ル は 、 init が 明 示 的 に シ グ ナ ル ハ ン ド ラ ー を 設 定 し た シ グ ナ ル だ け で あ る 。 こ う な っ て い る の は 、 誤 っ て シ ス テ ム を ダ ウ ン さ せ な い よ う に す る た め で あ る 。
POSIX.1−2001 で は 、 kill(−1,sig) が 呼 び 出 し 元 の プ ロ セ ス が シ グ ナ ル を 送 る こ と が 出 来 る プ ロ セ ス 全 て に sig を 送 る こ と を 要 求 し て い る 。 但 し 、 シ ス テ ム 実 装 時 に 定 め ら れ た シ ス テ ム プ ロ セ ス は シ グ ナ ル の 送 信 対 象 か ら 除 外 さ れ る 。 Linux で は 、 プ ロ セ ス が 自 分 自 身 に シ グ ナ ル を 送 れ る よ う に な っ て い る が 、 Linux の kill(−1,sig) は 呼 び 出 し 元 の プ ロ セ ス に は シ グ ナ ル を 送 ら な い 。
POSIX.1−2001 で は 以 下 の 動 作 に な る こ と を 要 求 し て い る 。 自 分 自 身 に シ グ ナ ル を 送 る と 、 シ グ ナ ル を 送 っ た ス レ ッ ド が そ の シ グ ナ ル を ブ ロ ッ ク し て お ら ず 、 他 の ど の ス レ ッ ド も そ の シ グ ナ ル を 受 け る 状 態 に も な く sigwait(3) で そ の シ グ ナ ル を 待 っ て も い な い 場 合 、 kill() が 返 る 前 に 少 な く と も 一 つ の ブ ロ ッ ク さ れ て い な い シ グ ナ ル が シ グ ナ ル を 送 っ た ス レ ッ ド に 配 送 さ れ な け れ ば な ら な い 。
Linux
で の 注 意
Linux で は 、 特 権 の
な い プ ロ セ ス
が 他 の プ ロ セ
ス に シ グ ナ ル
を 送 信 す る た
め に 必 要 な 権
限 に つ い て の
ル ー ル が 、 カ
ー ネ ル バ ー ジ
ョ ン に よ り 違
っ て い る 。 カ
ー ネ ル 1.0 か ら 1.2.2
で は 、 送 信 側
の 実 効 ユ ー ザ
ー ID が 送 信 対 象
の 実 効 ユ ー ザ
ー ID と 一 致 す る
か 、 送 信 側 の
実 ユ ー ザ ー ID が
送 信 対 象 の 実
ユ ー ザ ー ID と 一
致 す れ ば 、 シ
グ ナ ル を 送 信
で き た 。 カ ー
ネ ル 1.2.3 か ら 1.3.77で
は 、 送 信 側 の
実 効 ユ ー ザ ー ID
が 送 信 対 象 の
実 ユ ー ザ ー ID か
実 効 ユ ー ザ ー ID
の い ず れ か と
一 致 す れ ば シ
グ ナ ル を 送 信
で き た 。 現 在
の ル ー ル は 、
POSIX.1−2001 に 準 拠 し
て お り 、 カ ー
ネ ル 1.3.78 以 降 で 適
用 さ れ て い る
。
バ グ
バ ー ジ ョ ン 2.6.7 以 前 の 2.6 系 の カ ー ネ ル に は 、 プ ロ セ ス グ ル ー プ に シ グ ナ ル を 送 っ た と き に 、 呼 び 出 し 元 の プ ロ セ ス が プ ロ セ ス グ ル ー プ の (全 メ ン バ ー で は な く ) 一 部 の メ ン バ ー に 対 し て の み シ グ ナ ル を 送 る 許 可 を 持 っ て い な い 場 合 に 、 kill() が エ ラ ー EPERM で 失 敗 す る と い う バ グ が あ る 。 こ の エ ラ ー が 返 る に も か か わ ら ず 、 そ の シ グ ナ ル は 呼 び 出 し 元 が シ グ ナ ル を 送 る 許 可 を 持 つ 全 て の プ ロ セ ス へ 送 ら れ る 。
関 連 項 目
_exit(2), killpg(2), signal(2), tkill(2), exit(3), sigqueue(3), credentials(7), capabilities(7), signal(7)
こ の 文 書 に つ い て
こ の man ペ ー ジ は Linux man−pages プ ロ ジ ェ ク ト の リ リ ー ス 3.79 の 一 部 で あ る 。 プ ロ ジ ェ ク ト の 説 明 と バ グ 報 告 に 関 す る 情 報 は http://www.kernel.org/doc/man−pages/ に 書 か れ て い る 。