【发布时间】:2016-10-31 17:20:54
【问题描述】:
我正在为本地网络编写一个简单的点对点即时通讯工具。它使用 ini 文件来解析 UUID 以用作跨网络的标识符。通过 QSettings 对象访问 ini 文件。我已经编写了使程序的多个实例能够在同一台计算机上运行的功能。当第一个程序运行时,它会读取第一个条目的 ini 文件,如果存在则读取它,并将其替换为“INUSE”。关闭时,它将键值替换为原始 UUID。如果程序的另一个实例读取 ini 文件并读取一个 INUSE 作为第一个键值,它会在它之后创建另一个,获取它,并将 INUSE 标记放在第二个键值上。
这可以正常工作,但是,如果程序崩溃,“INUSE”的 UUID 将丢失,INUSE 将一直保留,直到手动取出。我该如何解释完成相同任务的系统崩溃的原因?
我已经查看了 QLockFile,但无法完全理解我将如何实现这样的系统。
感谢任何cmets。
当前ini文件格式如下:
[uuid]
1={uuid1}
2={uuid2}
程序 1 正在执行时
[uuid]
1=INUSE
2={uuid2}
程序正常结束后
[uuid]
1={uuid1}
2={uuid2}
本质上,我需要的是一种在程序执行之间保存数据的方法,同时也向其他实例发出信号,表明当前正在使用所述数据。
【问题讨论】: