diff --git a/src/sbbs3/sbbscon.c b/src/sbbs3/sbbscon.c
index cb9459e68df221d0325545bec000e766a28308b3..7b625dafb2edb238b410565bcc866cafa5c500f0 100644
--- a/src/sbbs3/sbbscon.c
+++ b/src/sbbs3/sbbscon.c
@@ -1238,7 +1238,17 @@ void recycle(void* cbdata)
 void cleanup(void)
 {
 #ifdef __unix__
-	unlink(pid_fname);
+	FILE* pf;
+	if ((pf = fopen(pid_fname, "r")) != NULL) {
+		int fpid = -1;
+		if (fscanf(pf, "%d", &fpid) == 1) {
+			fclose(pf);
+			if (fpid == getpid())
+				unlink(pid_fname);
+		}
+		else
+			fclose(pf);
+	}
 #endif
 }