首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检测QApplication退出正常或崩溃

问检测QApplication退出正常或崩溃
EN

Stack Overflow用户
提问于 2016-12-20 09:47:42
回答 2查看 1.2K关注 0票数 0

我需要检测应用程序是否正常退出或崩溃。QProcess具有已完成的()信号,并可以获得退出代码。但是,当应用程序崩溃或关闭时,我需要QApplication的退出代码。

EN

回答 2

Stack Overflow用户

发布于 2016-12-20 17:02:01

当你的进程崩溃时,它就消失了。崩溃意味着由于一个未处理的异常,该进程已经完成。您的工作应该是防止发生崩溃。换句话说:处理异常。请注意,异常可能不是C++异常,它们可能是特定于平台的低级机制,例如Windows上的本机异常或UNIX上的信号。您必须处理这些问题,但是要认识到,根本的问题并不仅仅是因为捕捉到了这样的异常而得到了解决。您必须假定应用程序的状态已经损坏,唯一安全的方法就是尽快退出。例如,不要试图修改任何文件:您可能会损坏它们。

票数 1
EN

Stack Overflow用户

发布于 2016-12-20 10:03:55

我不认为这是你能做到的事情。读取QApplication::exec()返回的值与Qt基础结构相关:

进入主事件循环,等待直到exit()被调用,然后返回被设置为exit()的值(如果exit()通过exit()调用,则为0)。

通常你的主语是这样的:

代码语言:javascript
复制
#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读取退出代码(或与其等效的另一个shell),然后根据其值执行一些操作。

还请注意,您至少可以做一些异常处理,因为一些崩溃的结果正是如此-一个异常已经抛出了某些原因,并没有得到正确的处理。Qt中未处理的异常被传播到顶层(即QCoreApplication)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41239251

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档