私は特定のタスクを実行するために使用するブーストスレッドプールを持っています。純粋な仮想関数doWork(int total) = 0;
を持つSensorクラスもあります。要求されるたびに、私のメインプロセスは必要なセンサーポインターを取得し、Sensor::doWork(int total)
を実行するようにスレッドプールに指示します。信号をキャッチするC++
threadpool->schedule(boost::bind(&Sensor::doWork,this,123456));
私は動的に他の誰かが故障セグメンテーション違反になり、コーディングなどを持っている場合ので、それは私のコントロール外にある、型センサのライブラリをロードしています。だから、私の主なプロセスでは、Sensor::doWork(int total)
によってスローされたエラーを処理し、スレッドをクリーンアップし、そのセンサーオブジェクトを削除し、エラーが発生した場所と場所をコンソールに通知する方法がありますか?
「信号をキャッチする」は、「セグメンテーションから回復する」とは異なるものです。前者は可能であり、後者はできない。 –
ダイナミックライブラリがsegfaultをスローするのではなく、シグナルをキャッチする方法はありますか? – joshua
標準の '' Cライブラリを使ってシグナルをキャッチすることができます。しかしそれほど重要ではない。重要なのは因果関係です:segfault *はシグナルを引き起こします。しかし、シグナルはセグメンテーションを防ぐことはできません。 –