プロセスの特定のスレッドを終了する方法は?

プロセスの特定のスレッドを終了する方法は?
$ ps -e -T | grep myp | grep -v grep
  797   797 ?        00:00:00 myp
  797   798 ?        00:00:00 myp
  797   799 ?        00:00:00 myp
  797   800 ?        00:00:00 myp

これは、PID = 797のプロセスmypと異なるSPIDを持つ4つのスレッドを示しています。

プロセス全体を終了せずにプロセス内の特定のスレッドを終了する方法場合によっては、特定のスレッドに致命的な依存関係がある場合、これはまったく不可能になる可能性があることがわかります。しかし、とにかく可能ですか?うん、どうですか?

試しましたが、kill 799プロセス自体が終了しました。これでmyp、プロセスなしで失敗する依存関係があるのか800​​、それとも殺すのが些細なので、単一のプロセスを殺すことができないからかどうかはわかりません。

ベストアンサー1

スレッドはプロセスの不可欠な部分であり、プロセスの外部で終了することはできません。一部はpthread_kill関数ですが、スレッド自体のコンテキスト内でのみ機能します。リンクのドキュメントから:

pthread_kill() は、与えられたスレッドのコンテキスト内でのみ信号が処理されるようにします。シグナルアクション(終了または停止)はプロセス全体に影響します。

おすすめ記事