我需要检测应用程序是否正常退出或崩溃。QProcess具有已完成的()信号,并可以获得退出代码。但是,当应用程序崩溃或关闭时,我需要QApplication的退出代码。
发布于 2016-12-20 17:02:01
当你的进程崩溃时,它就消失了。崩溃意味着由于一个未处理的异常,该进程已经完成。您的工作应该是防止发生崩溃。换句话说:处理异常。请注意,异常可能不是C++异常,它们可能是特定于平台的低级机制,例如Windows上的本机异常或UNIX上的信号。您必须处理这些问题,但是要认识到,根本的问题并不仅仅是因为捕捉到了这样的异常而得到了解决。您必须假定应用程序的状态已经损坏,唯一安全的方法就是尽快退出。例如,不要试图修改任何文件:您可能会损坏它们。
发布于 2016-12-20 10:03:55
我不认为这是你能做到的事情。读取QApplication::exec()返回的值与Qt基础结构相关:
进入主事件循环,等待直到exit()被调用,然后返回被设置为exit()的值(如果exit()通过exit()调用,则为0)。
通常你的主语是这样的:
#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)。
https://stackoverflow.com/questions/41239251
复制相似问题