Provided by: manpages-ja-dev_0.5.0.0.20210215+dfsg-1_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 が再利用される 場合に、 意図しないスレッドにシグナルが送られる可能性がある。 このシステムコールの使用は避 けること。 これらはシステムコールへの直接のインターフェースであり、 スレッドライブラリ内部での使用を 意図したものである。
返り値
成功した場合、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.79 の一部である。 プロジェクト の説明とバグ報告に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。