]> git.eshelyaron.com Git - emacs.git/commitdiff
tweak last patch: add comment and avoid the first sleep
authorSam Steingold <sds@gnu.org>
Sun, 11 Mar 2007 21:08:45 +0000 (21:08 +0000)
committerSam Steingold <sds@gnu.org>
Sun, 11 Mar 2007 21:08:45 +0000 (21:08 +0000)
src/process.c

index 0fbbd5d34c31ddb42d96fb389e1f24d447d918d3..975d92f36f1be264cc7d24f885254ebd5a42ce88 100644 (file)
@@ -6495,13 +6495,16 @@ sigchld_handler (signo)
 #define WUNTRACED 0
 #endif /* no WUNTRACED */
       /* Keep trying to get a status until we get a definitive result.  */
-      do
-       {
-          sleep (1);
-         errno = 0;
-         pid = wait3 (&w, WNOHANG | WUNTRACED, 0);
-       }
-      while (pid < 0 && errno == EINTR);
+      while (1) {
+        errno = 0;
+        pid = wait3 (&w, WNOHANG | WUNTRACED, 0);
+       if (! (pid < 0 && errno == EINTR))
+          break;
+        /* avoid a busyloop: wait3 is a system call, so we do not want
+           to prevent the kernel from actually sending SIGCHLD to emacs
+           by asking for it all the time */
+        sleep (1);
+      }
 
       if (pid <= 0)
        {