diff -uNr make-4.1.orig/main.c make-4.1/main.c
--- make-4.1.orig/main.c	2014-10-05 12:24:51.000000000 -0400
+++ make-4.1/main.c	2015-10-20 22:08:00.000000000 -0400
@@ -3364,9 +3364,12 @@
 #else
       /* Close the write side, so the read() won't hang.  */
       close (job_fds[1]);
-
-      while (read (job_fds[0], &token, 1) == 1)
+      int r;
+      EINTRLOOP (r, read (job_fds[0], &token, 1));
+      while (r == 1) {
         ++tcnt;
+	EINTRLOOP (r, read (job_fds[0], &token, 1));
+      }
 #endif
 
       if (tcnt != master_job_slots)
