2016-06-30 4 views
0

私はLinux上で単一のプロセスとして動作する組み込みアプリケーションを持っています。スレッドが終了していることを確認する必要がありますか?

私は、プロセスは、アプリと同じように、永遠に実行する必要がありますすべては、いくつかのスレッドを持っている

など、そのようなセグメンテーション違反などの問題を、キャッチするsigaction()を使用しています。

私の質問は、スレッドの1つが死ぬかどうかを検出する必要があるかどうかです。

スレッドのエラーがアプリケーションのsigaction()ハンドラによってキャッチされますか?

私はpthread_cleanup_push/popを使用したいと考えていましたが、this pageは "プロセス内の任意のスレッドが終了、_Exit、_exitを呼び出すと、プロセス全体が終了します"というので、スレッドがプロセスレベルで...

答えて

1

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

スポーンされたスレッドの状態を確認する場合は、実行中かどうかを検出するフラグを使用できます。詳細

How do you query a pthread to see if it is still running?

+0

ために、このリンクをチェックしてください私のスレッドは永遠にループするべき、と私は検出しようとしている何である、持ち運びにくいクラッシュしない限り、終了necer。スレッドをチェックしてプロセスをブロックすることはできません。何がお勧めですか? – Mawg

+0

スレッドはクラッシュしないので、プロセスは実行します。プロセスがクラッシュした場合、何もチェックする必要はありません。 –

関連する問題