0

Linux で単一のプロセスとして実行される組み込みアプリケーションがあります。

sigaction()セグメンテーション違反などの問題をキャッチするために使用します。

プロセスにはいくつかのスレッドがあり、アプリと同様に、そのすべてが永久に実行される必要があります。

私の質問は、スレッドの 1 つが死んでいるかどうかを検出する必要があるかどうか (およびその方法) です。

スレッドのセグ フォールトは、アプリケーションのsigaction()ハンドラーによって捕捉されますか?

を使おうと思っていたのですpthread_cleanup_push/popが、このページに「プロセス内のいずれかのスレッドがexit、_Exit、または_exitを呼び出すと、プロセス全体が終了する」と書かれているので、死んだスレッドはプロセスレベルでキャッチされるのだろうか…</p >

4

1 に答える 1

1

子スレッドが完了したかどうかを確認する必要があることは必須ではありません。子スレッドが処理を完了した後に何かを行う必要がある場合はthread_join()、メイン スレッドから呼び出すことができます。これにより、子スレッドが実行を完了するまで待機し、その後残りを行うことができます。メインスレッドで使用thread_exitしている場合、処理が完了すると終了し、生成されたスレッドは実行を継続します。プロセスは、すべてのスレッドの実行が完了した後にのみ強制終了されます。

生成されたスレッドのステータスを確認したい場合は、フラグを使用して実行中かどうかを検出できます。詳細については、このリンクを確認してください

pthread にクエリを実行して、まだ実行中かどうかを確認するにはどうすればよいですか?

于 2016-07-01T09:27:56.927 に答える