Qt应用的单实例运行

使一个Qt应用只有一个示例,在系统中运行

【Qt应用的单实例运行】 在实际的项目中遇到,刚开始以为实共享一块内存进行进程间通信。经过查找后发现是为了使一个应用单实例化,也就是在当前的系统环境中该应用程序同时只能运行一个。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

int main(int argc, char *argv[])
{
QApplication a(argc, argv);

burner b(argc, argv);
QSharedMemory *shareMem =new QSharedMemory(QString("一个标志字段"));
volatile short i = 2;
while (i--)
{
if (shareMem->attach(QSharedMemory::ReadOnly)) /* no need to lock, bcs it's read only */
{
shareMem->detach();
}
}

if (shareMem->create(1)) {
a.exec();
if (shareMem->isAttached())
shareMem->detach();
delete shareMem;
}

return 0;
}


    推荐阅读