Don't retry fork() in a loop.
authorGeorge Koehler <xkernigh@netscape.net>
Sun, 13 Nov 2016 17:45:01 +0000 (12:45 -0500)
committerGeorge Koehler <xkernigh@netscape.net>
Sun, 13 Nov 2016 17:45:01 +0000 (12:45 -0500)
If fork() fails, then report a fatal error.  Don't spin the cpu
retrying fork() until it succeeds.  It can fail when we reach a limit
on the number of processes.  Spinning on the cpu would slow down other
processes when we want them to exit.  This would get bad if we had a
parallel build with multiple ack processes spinning.

util/ack/run.c

index 87d8745..6b5b69f 100644 (file)
@@ -80,7 +80,10 @@ static int run_exec(trf *phase, const char *prog) {
 
        fflush(stdout) ;
        fflush(stderr) ;
-       while ( (child=fork())== -1 ) ;
+       child= fork() ;
+       if ( child== - 1) {
+               fatal("Cannot fork %s", prog) ;
+       }
        if ( child ) {
                /* The parent */
                do {