Parcourir la source

s-s-d: Use kill instead of /proc to check for pid existence

Guillem Jover il y a 18 ans
Parent
commit
b5c0381ff4
2 fichiers modifiés avec 10 ajouts et 10 suppressions
  1. 5 0
      ChangeLog
  2. 5 10
      utils/start-stop-daemon.c

+ 5 - 0
ChangeLog

@@ -1,3 +1,8 @@
+2008-08-03  Guillem Jover  <guillem@debian.org>
+
+	* utils/start-stop-daemon.c (pid_is_running) [!OSHURD]: Reimplement
+	using kill instead of less-portable /proc.
+
 2008-08-03  Guillem Jover  <guillem@debian.org>
 
 	* utils/start-stop-daemon.c (check) [HAVE_KVM_H]: Call pid_is_exec.

+ 5 - 10
utils/start-stop-daemon.c

@@ -904,17 +904,12 @@ pid_is_running(pid_t pid)
 static int
 pid_is_running(pid_t pid)
 {
-	struct stat sb;
-	char buf[32];
-
-	sprintf(buf, "/proc/%d", pid);
-	if (stat(buf, &sb) != 0) {
-		if (errno != ENOENT)
-			fatal("Error stating %s: %s", buf, strerror(errno));
+	if (kill(pid, 0) == 0 || errno == EPERM)
+		return 1;
+	else if (errno == ESRCH)
 		return 0;
-	}
-
-	return 1;
+	else
+		fatal("Error checking pid %u status: %s", pid, strerror(errno));
 }
 #endif