我们经常会做一些软件、程序只希望有最多一个运行实例。我从网上找到了个方法,虽然现在还不太明白原理,但是这种方法总算会用了。
原文摘自:http://dev.firnow.com/course/3_program/c++/cppxl/20100531/206675.html
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入了门的人一目了然。