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