diff src/process-unix.c @ 458:c33ae14dd6d0 r21-2-44

Import from CVS: tag r21-2-44
author cvs
date Mon, 13 Aug 2007 11:42:25 +0200
parents 576fb035e263
children 0784d089fdc9
line wrap: on
line diff
--- a/src/process-unix.c	Mon Aug 13 11:41:26 2007 +0200
+++ b/src/process-unix.c	Mon Aug 13 11:42:25 2007 +0200
@@ -1541,8 +1541,17 @@
 
   /* Finally send the signal. */
   if (EMACS_KILLPG (pgid, signo) == -1)
-    error ("kill (%ld, %ld) failed: %s",
-	   (long) pgid, (long) signo, strerror (errno));
+    {
+      /* It's not an error if our victim is already dead.
+         And we can't rely on the result of killing a zombie, since
+         XPG 4.2 requires that killing a zombie fail with ESRCH,
+         while FIPS 151-2 requires that it succeeds! */
+#ifdef ESRCH
+      if (errno != ESRCH)
+#endif
+	error ("kill (%ld, %ld) failed: %s",
+	       (long) pgid, (long) signo, strerror (errno));
+    }
 }
 
 /* Send signal SIGCODE to any process in the system given its PID.