2009-09-17 8 views
4

私はPythonアプリケーションにC++ライブラリ(SIPとのバインディング)を埋め込みます。特定の回覧(エラーの場合)では、このライブラリはexit()を使用して、アプリケーション全体を終了させます。 このイベントをキャッチする方法はありますか、別の方法でエラーケースを処理するためにライブラリを変更する必要はありますか?埋め込みC++モジュールのexit()をPythonコードからキャッチするには?

あなたは、ライブラリのソースを変更する必要があり、非常に多くの

+5

exit()?図書館で?誰かが殴られる必要があります。 –

+0

FWIW:Googleのテストライブラリは明らかにexit()呼び出しを回避する手段を実装しています。ユニットテストでは、 'ASSERT_EXIT'マクロを使ってプログラムの終了をテストできます。 [gtest詳細ガイド](http://code.google.com/p/googletest/wiki/AdvancedGuide) – Hendrik

答えて

6

、ありがとうございました。 Cでは「例外処理」はなく、いかなる状況でもexit()は呼び出しコードに戻りません。

+1

+1を参照してください。いくつかのケースでは 'atexit()'が役に立ちますが、呼び出しコードに戻る必要がある場合は役に立ちません。 – gimpf

+0

ありがとうございます、私は何をしなければならないのか分かりません! Rgds、 –

0

LD_LIBRARY_PATHでリンクするライブラリをオーバーライドして、独自の終了機能を作成できます。正常に動作します。