我们经常会做一些软件、程序只希望有最多一个运行实例。我从网上找到了个方法,虽然现在还不太明白原理,但是这种方法总算会用了。
原文摘自:http://dev.firnow.com/course/3_program/c++/cppxl/20100531/206675.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
int
main(
int
argc,
char
*argv[])
{
QApplication
a(argc, argv);
QSharedMemory *shareMem =
new
QSharedMemory(QString(
"SingleInstanceIdentify"
));
/* if the sharedmemory has not been created, it returns false, otherwise true.
* But if the application exit unexpectedly, the sharedmemory will not detach.
* So, we try twice.
*/
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))
{
MainWindow w;
w.show();
a.exec();
if
(shareMem->isAttached())
shareMem->detach();
delete shareMem;
}
return
0;
}
|
当然别忘了在开头加上#include<QSharedMemory>
这段代码应该不用我多解释什么,虽然不太好理解,但是这段代码的用法对于QT入了门的人一目了然。