在main函数中加入如下代码:
QSystemSemaphore sema("CLGObject", 1, QSystemSemaphore::Open);
sema.acquire();// 在临界区操作共享内存
QSharedMemory mem("CLGSystemObjcet");// 全局对象名
if (!mem.create(1))// 如果全局对象已存在则退出
{
sema.release();// 如果是 Unix 系统,会自动释放。
return 0;
}
QApplication application(argc, argv);
ClgWin win;
win.show();
sema.release();// 释放临界区
return application.exec();
使用共享内存和全局信号量机制来实现。