アプリケーションを正常に終了するかクラッシュさせるかを検出する必要があります。 QProcessにはfinished()シグナルがあり、終了コードを取得できます。しかし、アプリケーションがクラッシュまたはクローズするとQApplicationの終了コードが必要になります。QApplication出口を正常またはクラッシュとして検出する
答えて
私はこれがあなたのようにできるとは思わない。 0の場合である()(終了するように設定された値を返し その後、呼び出され)
は(出口までメインイベントループと待機を開始:
QApplication::exec()
によって返される値は、Qtのインフラストラクチャに関連して読んexit()は via quit())です。
このような通常あなたの主なルックス:
#include <QApplication>
int main(int argc, char **argv)
{
QApplication a(argc, argv);
// Initialize your widget(s)
return a.exec(); // You can store this and check its value
}
しかし、私は間違っていない場合、これはあなたのアプリケーション(セグメンテーションフォールト、未処理の例外など)のクラッシュを扱う含まれていません。 Linuxでは、通常、アプリケーションを起動し、アプリケーションが終了したりクラッシュした後に終了コードを読み取るスクリプトを使用します。 Linuxを使用している場合は、echo $?
を使用して、bashスクリプト(または別のシェルでは同等のコード)から終了コードを読み取り、その値に基づいて何かを実行できます。
何らかのクラッシュが何らかの理由でスローされ、正しく処理されていない例外と同じ結果になるので、少なくともいくつかの例外処理を行うことができます。 Qtの未処理例外はトップレベル(つまりQCoreApplication
)に伝播します。
プロセスがクラッシュすると、終了しました。クラッシュは、処理されていない例外が原因でプロセスが終了したことを意味します。あなたの仕事はにあり、クラッシュを防ぐにはが起きないようにする必要があります。つまり、例外を処理します。例外はC++の例外ではなく、Windows上のネイティブ例外やUNIX上のシグナルなど、低レベルのプラットフォーム固有のメカニズムかもしれないことに注意してください。それらを処理する必要がありますが、そのような例外を捕まえるだけで根本的な問題は解決されないことを認識してください。あなたはあなたのアプリケーションの状態が壊れていると仮定しなければなりません、とにかくできるだけ早く終了するだけです。たとえば、ファイルを変更しようとしないでください。ファイルを破損する可能性があります。
- 1. iBeaconを使用した部屋の入口/出口の検出RSSI
- 2. 非常に早いクラッシュを検出します
- 3. プロセス出口の問題スレッドは正常に終了しません。
- 4. Javaとhaarascadeの顔と口の検出 - 鼻の口
- 5. アッカストリーム入口と出口はここ
- 6. DelphiはTEdit出口の前にデータベースフィールドを検証します
- 7. Ionic2で目の位置と口を検出するには?
- 8. アッカは、入口と出口が、私は次のエラー取得しています
- 9. 子供の通常出口用のスーパーバイザコールバック
- 10. 画像に変換して顔を検出しようとすると、Google顔検出がクラッシュする
- 11. 「スタックの破損が検出されました:異常終了」のクラッシュ
- 12. 検出サーバーのクラッシュは、RMI
- 13. Codeigniterはベースパスまたは出口を定義します
- 14. OpenCVユーザーの口を検出して幅と高さを測定するiOSプログラム
- 15. 出口
- 16. 出口
- 17. Googleマップで建物と人口を検出する
- 18. アブソリュートバグを検出して修正する
- 19. Pythonを使用した異常検出
- 20. ベイジアンネットワークを使用した異常検出
- 21. メインスレッド出口、他の出口もありますか?
- 22. Mono.Cecil:ログメソッドの入口と出口点
- 23. AndroidモバイルビジョンAPI検出口が開いています
- 24. Windowsがクラッシュまたは電源障害後にリブートしたときの検出
- 25. MPIスタック・スマッシングによるジョブ・クラッシュが検出されました
- 26. 出口ポップアップが正しく動作しません
- 27. ドッカーコンテナがクラッシュしたかどうかを検出する方法
- 28. onClickListerner()を呼び出すと常にアプリケーションがクラッシュする
- 29. Springブート時にMySQLが "バッファオーバーフローが検出されました"とクラッシュする
- 30. トリガとIsDefaultedとIsKeyboardFocusedボタンの入口/出口アクションは
返信いただきありがとうございます。はい、app.exec()は終了コードを返します。しかし、コード – shahina
のような のようなアプリケーションアプリケーション(argc、argv); ウィジェットw; w.show(); return app.exec(); – shahina
ウィジェットはisWindgetです。ウィジェットクラスでクラッシュしているとします。アプリケーションの終了コードを取得する方法は? – shahina