在崩溃时需要更新的Qt5 ini文件

Qt5 ini file that needs updating in case of a crash

本文关键字:Qt5 ini 文件 更新 崩溃      更新时间:2023-10-16

我正在为本地网络编写一个简单的点对点即时通讯程序。它使用一个ini文件来解析UUID,以便在网络中用作标识符。ini文件是通过QSettings对象访问的。我已经编写了功能,使该程序的多个实例可以在同一台计算机上运行。当第一个程序运行时,它为第一个条目读取ini文件,如果存在,则读取它,并将其替换为"INUSE"。关闭时,它用原始UUID替换键值。如果程序的另一个实例读取ini文件并读取INUSE作为第一个键值,它将在它之后创建另一个,接受它,并在第二个键值上放置INUSE标记。

这工作得很好,但是,如果程序崩溃,"INUSE"的UUID将丢失,INUSE将保留,直到手动取出。我该如何解释完成相同任务的系统崩溃?

我看了一下QLockFile,但我不知道该如何实现这样一个系统。

欢迎评论

ini文件的当前格式如下:

[uuid]  
1={uuid1}  
2={uuid2}  

程序1正在执行

[uuid]  
1=INUSE  
2={uuid2}  

和程序正常结束后的

[uuid]
1={uuid1}
2={uuid2}  

本质上,我需要的是一种在程序执行之间保存数据的方法,同时也要向其他实例发出信号,表明当前正在使用数据。

我认为首先要确定程序崩溃的原因。为了选择更好的解决方案。

QLockFile允许您防止多个进程访问同一个文件。因此,只有当程序因此而崩溃时,这才对您有用。

无论你的程序崩溃的原因是什么,我建议使用异常来执行正确的操作:

try {
    // Some of your code
} catch (exception &e)
{
    // Some error occured, do something about it.
    // Like restoring your UUID.
}

你可以在这里阅读更多关于异常的内容,你也可以一直使用QT版本的Qexception。

希望有所帮助