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 {