Qt5 ini文件,在发生崩溃时需要更新

时间:2016-10-31 17:20:55

标签: c++ qt5 ini

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

但是,如果程序崩溃了" INUSE"将丢失,INUSE将保留,直到手动取出。如何解决使用完成同样事情的系统崩溃的问题?

我看过QLockFile,但不能完全理解我将如何实现这样一个系统。

感谢任何评论。

ini文件的当前格式如下:

[uuid]  
1={uuid1}  
2={uuid2}  
程序1执行时

[uuid]  
1=INUSE  
2={uuid2}  

正常程序结束后

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

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

1 个答案:

答案 0 :(得分:0)

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

QLockFile允许您阻止多个进程访问同一文件。因此,如果程序崩溃,这只对您有用。

你的程序崩溃的原因是什么,我建议在发生这种情况时使用异常来执行正确的操作:

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

您可以阅读有关例外here的更多信息,并且始终可以使用QT版本Qexception

希望有所帮助