当我的应用程序在Qt中崩溃时如何进行一些清理/关闭操作?

时间:2018-05-03 04:17:35

标签: qt exception-handling crash device

我正在开发一个应用程序,它使用通过USB连接到PC的设备(微处理器)。我正在使用一个具有该微处理器某些特定功能的库。

在应用程序开始时,用户始终需要使用密码“登录”设备。这实际上是在微处理器中执行一些初始化函数,即:

//microprocessor initialization functions
open(); 
device_session = s; // a structure
error=login(&s,password); //if password is ok opens a session 
start();

当用户关闭应用程序时,我还需要关闭设备,执行:

//microprocessor closing functions
 finish(); 
 logout(&s); // it requires the session structure to close
 close(); 

我在我的应用程序的析构函数中执行此操作。

问题是,如果我的应用程序崩溃,析构函数不会被执行,两者都不是关闭函数。因此,下次启动应用程序时,初始化函数会失败,因为打开了另一个会话而我无法关闭它(因为注销需要 s )。使其再次工作的唯一方法是将设备重新连接到PC(硬件重置)。

所以我的问题是,即使我的应用程序崩溃,也可以执行关闭函数,无论错误的来源如何。 我正在尝试重写QApplication :: notify(),如此处所述。这是正确的方法吗? Qt/C++ Error handling

我考虑的另一种方法是有两个应用程序, A B

A 处理微处理器初始化并将会话对象传递给 B

除了关闭微处理器连接外,

B 执行其他所有操作。 当 B 关闭或崩溃时, A 只会执行结算功能。这可行吗?

如果问题看起来很愚蠢,我很抱歉,但我在开发应用程序方面没有太多经验。我在发布之前试图寻找答案,但我不确定要遵循什么方法,所以我不知道我应该开始搜索什么。

非常感谢。

0 个答案:

没有答案