Provided by: manpages-ja-dev_0.5.0.0.20131015+dfsg-2_all
名前
tkill, tgkill - スレッドにシグナルを送る
書式
int tkill(int tid, int sig); int tgkill(int tgid, int tid, int sig); 注: これらのシステムコールには、glibc のラッパー関数はない。「注意」の節を参照。
説明
tgkill() はスレッド・グループ tgid に属するスレッド ID が tid のスレッドにシグナル sig を 送る。 (これに対し、 kill(2) は一つのプロセス (すなわち、スレッド・グループ) にまとめてシ グナルを 送るのにだけ利用できる。 kill(2) で送信されたシグナルはプロセス内の任意のスレッ ドに配送される。) tkill() はもう使われなくなった tgkill() の先祖である。 tkill() ではシグナルの送り先のス レッド ID しか指定できない。 そのため、スレッドが終了して、そのスレッド ID が再利用される 場合に、 意図しないスレッドにシグナルが送られる可能性がある。 このシステムコールの使用は避 けること。 tgid に -1 が指定された場合、 tgkill() は tkill() と等価である。 これらはシステムコールへの直接のインターフェースであり、 スレッド・ライブラリ内部での使用 を意図したものである。
返り値
成功した場合、0 が返される。エラーが発生した場合、-1 が返され、 errno が適切に設定される。
エラー
EINVAL 指定されたスレッド ID、スレッドグループ ID、シグナルが不正であった。 EPERM 許可がなかった。どのような許可が必要かについては、 kill(2) を参照のこと。 ESRCH 指定されたスレッドID (とスレッド・グループID) を持つプロセスが存在しない。
バージョン
tkill() は Linux 2.4.19 / 2.5.4 以降でサポートされ、 tgkill() は Linux 2.5.75 で追加され た。
準拠
tkill() と tgkill() は Linux 固有であり、 移植を想定したプログラムでは使用すべきではな い。
注意
スレッド・グループの説明については clone(2) の CLONE_THREAD の説明を参照のこと。 glibc はこれらのシステムコールに対するラッパー関数を提供していない。 syscall(2) を使って 呼び出すこと。
関連項目
clone(2), gettid(2), kill(2), rt_sigqueueinfo(2)
この文書について
この man ページは Linux man-pages プロジェクトのリリース 3.54 の一部 である。プロジェクト の説明とバグ報告に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。