在崩溃时需要更新的Qt5 ini文件
Qt5 ini file that needs updating in case of a crash
我正在为本地网络编写一个简单的点对点即时通讯程序。它使用一个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。
希望有所帮助
相关文章:
- Qt5:使用QCommandLineParser类时出现奇怪的编译错误
- phytec phyBOARD iMX-6在从闪存而不是SD卡运行qt5 opengles应用程序时表现不佳(FPS减半
- 更改命令行 qt5 源代码构建配置的正确/快速方法
- 控制台输出在 Qt5 中未正确显示
- 在Qt5中使用QTextSteam时的"使用已删除功能"
- Qt5 从 MySQL 数据库中选择数据
- Qt5 远程对象 + 自定义类型,但不在 POD 中
- Qt5 用户界面编译器:-i 选项不可用
- Qt5 throws std::bad_alloc
- 如何避免在 cmake 中自动链接 Qt5 库?
- 动态更改 qt5 选项卡名称
- 可能的Qt5错误:调用setFixedSize()禁用主窗口的关闭按钮(在Win7下)
- QT5 信号不会激活插槽内的功能
- 如何在使用 Qt5 构造函数时将非常量参数修改为常量参数?
- 如何在 Qt5 中执行多个 QProcess
- Qt5 [make -snap] 无法正确编译:进程"/usr/bin/snap"代码 1 退出
- 使用 Qt5 SQL 进行异步数据库访问的策略
- Qt5 ui,多个窗口:如何从窗口 1 访问窗口 2 中的 UI 对象
- 如何使用新语法QT5将信号连接到信号?
- 在崩溃时需要更新的Qt5 ini文件