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 {