From d1b866aeb28eafb24e1dbf5b27b269a2afc1e4a9 Mon Sep 17 00:00:00 2001 From: EndrII Date: Wed, 13 Oct 2021 22:21:41 +0300 Subject: [PATCH] fix PID file --- Patronum/src/PServiceBase.cpp | 5 +++-- Patronum/src/Private/pcommon.cpp | 10 +++++++--- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/Patronum/src/PServiceBase.cpp b/Patronum/src/PServiceBase.cpp index 2fbb842..778ba6f 100644 --- a/Patronum/src/PServiceBase.cpp +++ b/Patronum/src/PServiceBase.cpp @@ -29,8 +29,9 @@ ServiceBase::ServiceBase(int argc, char *argv[]) { ServiceBase::~ServiceBase() { delete d_ptr; - QFile pidFile(PCommon::instance()->getPidfile()); - if (pidFile.exists()) { + qint64 pid = PCommon::instance()->getPidFromPidfile(); + if (pid == QCoreApplication::applicationPid()) { + QFile pidFile(PCommon::instance()->getPidfile()); pidFile.remove(); } diff --git a/Patronum/src/Private/pcommon.cpp b/Patronum/src/Private/pcommon.cpp index 0fe0bde..11190fa 100644 --- a/Patronum/src/Private/pcommon.cpp +++ b/Patronum/src/Private/pcommon.cpp @@ -19,11 +19,15 @@ QString PCommon::getPidfile() const { qint64 PCommon::getPidFromPidfile() const { QFile file = getPidfile(); - - if (!file.exists()) + if (!file.open(QIODevice::ReadOnly)) { return 0; + } - return file.readAll().toLongLong(); + auto data = file.readAll(); + + file.close(); + + return data.toLongLong(); } QString PCommon::getPWD() const {