有的时候我们需要保证用户只能运行一个实例进程,那下面就介绍一下利用Qsharememory来完成这操作!
QShareMemory
示例如下
QLogin::QLogin(QWidget *parent /*= 0*/)
: QDialog(parent)
{
m_sharedMen = new QSharedMemory("SWARTZ 1.0");
...
}
bool QLogin::IsRunning()
{
volatile int i = 2;
while (i--)
{
if (m_sharedMen->attach(QSharedMemory::ReadOnly))
{
m_sharedMen->detach();
}
}
if (!m_sharedMen->create(1))
{
return true;
}
return false;
}
QLogin::~QLogin()
{
delete(m_sharedMen);
}
只需要在主函数里面加一个判断即可!
QLogin login;
if (login.IsRunning())
{
QMessageBox::about(NULL, QObject::tr("warning"), QObject::tr("App has been started"));
return 0;
}