Manpages

名 前

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 に 正 の 値 を 指 定 し た 場 合 、 シ グ ナ ル sigpid で 指 定 さ れ た 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/ に 書 か れ て い る 。