限制应用程序只能运行一个实例
可使用Qt提供的QLockFile类,创建锁文件。
QLockFile 使用简介
QLockFile 是 Qt 提供的一个用于创建锁文件的类,主要用于防止应用程序的多个实例同时访问同一资源(如配置文件或数据文件),或者限制应用程序只能运行一个实例。
基本用法
#include <QLockFile>
#include <QDir>
int main(){
// 创建锁文件
QLockFile lockFile(QDir::temp().absoluteFilePath("myapp.lock"));
// 尝试获取锁
if (!lockFile.tryLock(100)) {
// 获取锁失败,说明已经有实例在运行
qDebug() << "Another instance is already running";
return 1;
}
// 程序正常执行...
// 锁会在QLockFile对象销毁时自动释放
return 0;
}
关键点说明
1. 锁文件位置:通常将锁文件放在临时目录(`QDir::temp()`)中,而不是应用程序目录,因为应用程序目录可能没有写权限。
2. 锁文件名:通常以App名称命名。
3. 错误处理:`tryLock()`返回false表示获取锁失败,说明已有实例在运行。
4. 自动释放:当QLockFile对象销毁时(通常是程序退出时),锁会自动释放。
5. 超时设置:`tryLock()`的参数是等待获取锁的毫秒数,设为0表示不等待,立即返回。