0

私は C99 マルチスレッド Linux プログラムを開発しており、サードパーティ コードを実行するスレッドがいくつかあります。したがって、問題のあるスレッドを終了し、他のスレッドが正常に終了して最後にプログラムを終了する機会を与えるために、SIGSEGVを処理できるようにしたいと考えています。問題は、 pthread_exit が async-signal-safe ではないことです。それを行う正しい方法は何だろうと思っています。

Linux 3.0 以降で動作するため、移植性は気にしません。

編集: 申し訳ありませんが、pthread_kill を書きましたが、pthread_kill は別のシグナルを送信するだけなので、本当に pthread_exit を意味していました。

デイモンのフィードバックに続いて更新:

うまく終了するとは、他のスレッドが処理を完了するのを待つことです。そして、プロセス全体を終了します。グローバルの設定 (静的揮発性 sig_atomic_t g_quit)。しかし同時に、SIGSEGV を生成したスレッドが処理を継続することは望ましくありません。

4

0 に答える 0