不解释,直接上代码
#include <QApplication>
#include <QTextCodec>
#include <QSystemSemaphore>
#include <QSharedMemory>
#include <QMessageBox>
#include "mainwindow.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QTextCodec::setCodecForTr(QTextCodec::codecForLocale());
QSystemSemaphore sema("a",1,QSystemSemaphore::Open);
sema.acquire();// 在临界区操作共享内存 SharedMemory
QSharedMemory mem("b");// 全局对象名
if (!mem.create(1))// 如果全局对象以存在则退出
{
QMessageBox::information(0, QObject::tr("c"),QObject::tr("程序运行中,如有需要请先退出"));
sema.release();
return 0;
}
sema.release();
MainWindow w;
w.show();
return a.exec();
}
这样就可以实现避免应用程序被重复打开了。