单一进程测试函数:
bool JasonQt_SingleApplication(const QString &flag){ static QSharedMemory *shareMem = NULL;
if(shareMem) { return true; }
shareMem = new QSharedMemory("JasonQt_SingleApplication_Control_" + flag);
volatile short i = 2; while (i--) { if (shareMem->attach(QSharedMemory::ReadOnly)) { shareMem->detach(); } }
if(shareMem->create(1)) { return true; }
return false;}
单一进程在main函数中的使用
int main(int argc, char *argv[]){ QApplication a(argc, argv); SystemTrayIcon w;
w.show();
if(!JasonQt_SingleApplication("w")) { qDebug("No Single!"); return -1;
} return a.exec();}
if(!JasonQt_SingleApplication("w")) { qDebug("No Single!"); return -1;
}