Provided by: manpages-ja-dev_0.5.0.0.20221215+dfsg-1_all bug

名前

       tkill, tgkill - スレッドにシグナルを送る

書式

       int tkill(int tid, int sig);

       int tgkill(int tgid, int tid, int sig);

       : tkill() には、glibc のラッパー関数はない。「注意」の節を参照。

説明

       tgkill()  はスレッドグループ tgid に属するスレッド ID が tid のスレッドにシグナル sig を送
       る。 (これに対し、 kill(2)  は一つのプロセス (すなわち、スレッドグループ) にまとめてシグナ
       ルを  送るのにだけ利用できる。 kill(2)  で送信されたシグナルはプロセス内の任意のスレッドに
       配送される。)

       tkill()  はもう使われなくなった tgkill()  の先祖である。 tkill()  ではシグナルの送り先のス
       レッド  ID しか指定できない。 そのため、スレッドが終了して、そのスレッド ID が再利用される
       場合に、 意図しないスレッドにシグナルが送られる可能性がある。 このシステムコールの使用は避
       けること。

       これらはシステムコールへの直接のインターフェースであり、  スレッドライブラリ内部での使用を
       意図したものである。

返り値

       成功した場合、0 が返される。エラーが発生した場合、-1 が返され、 errno が適切に設定される。

エラー

       EAGAIN The RLIMIT_SIGPENDING resource limit was reached and sig is a real-time signal.

       EAGAIN Insufficient kernel memory was available and sig is a real-time signal.

       EINVAL 指定されたスレッド ID、スレッドグループ ID、シグナルが不正であった。

       EPERM  許可がなかった。どのような許可が必要かについては、 kill(2)  を参照のこと。

       ESRCH  指定されたスレッドID (とスレッドグループID) を持つプロセスが存在しない。

バージョン

       tkill()  は Linux 2.4.19 / 2.5.4 以降でサポートされ、 tgkill()  は Linux 2.5.75 で追加され
       た。

       tgkill() のライブラリでのサポートは glibc バージョン 2.30 で追加された。

準拠

       tkill()   と  tgkill()  は Linux 固有であり、 移植を想定したプログラムでは使用すべきではな
       い。

注意

       スレッドグループの説明については clone(2)  の CLONE_THREAD の説明を参照のこと。

       glibc は tkill() に対するラッパー関数を提供していない。 syscall(2) を使用すること。  glibc
       2.30 より前では、 tgkill() に対するラッパー関数も存在しない。

関連項目

       clone(2), gettid(2), kill(2), rt_sigqueueinfo(2)

この文書について

       この man ページは Linux man-pages プロジェクトのリリース 5.10 の一部である。プロジェクトの
       説明とバグ報告に関する情報は https://www.kernel.org/doc/man-pages/ に書かれている。