解决国产系统按键扫描工具进程能同时打开多个的问题;

This commit is contained in:
yangjiaxuan 2024-08-23 15:28:39 +08:00
parent 5de0658d61
commit 03d2887082
1 changed files with 31 additions and 0 deletions

View File

@ -2,6 +2,14 @@
#include <QApplication>
#include "base/HGDef.h"
#include <QTranslator>
#include <QFile>
#if !defined (HG_CMP_MSC)
#include <fcntl.h>
#include <unistd.h>
#include <sys/file.h>
#endif
#include "log/log.h"
HLOG g_hLog = nullptr;
@ -37,6 +45,25 @@ int main(int argc, char *argv[])
CloseHandle(hMutex);
return -1;
}
#else
const QString lockFilePath = "/tmp/HGScanTool.lock";
QFile lockFile(lockFilePath);
if (!lockFile.open(QIODevice::ReadWrite | QIODevice::Unbuffered))
{
return 0;
}
int fd = lockFile.handle();
struct flock lock;
lock.l_type = F_WRLCK;
lock.l_whence = SEEK_SET;
lock.l_start = 0;
lock.l_len = 0;
if (fcntl(fd, F_SETLK, &lock) == -1)
{
lockFile.close();
return 0;
}
#endif
QTranslator translator_qt;
@ -55,6 +82,10 @@ int main(int argc, char *argv[])
#ifdef HG_CMP_MSC
CloseHandle(hMutex);
#else
lock.l_type = F_UNLCK;
fcntl(fd, F_SETLK, &lock);
lockFile.close();
#endif
return ret;
}