while (wait3(&foo, WNOHANG, (struct rusage *)0) > 0)
while (waitpid((pid_t) -1, &foo, WNOHANG) > 0)
Job_AbortAll (){    LstNode           	ln;		/* element in job table */    Job            	*job;	/* the job descriptor in that element */    int     	  	foo;        aborting = ABORT_ERROR;        if (nJobs) {	(void)Lst_Open (jobs);	while ((ln = Lst_Next (jobs)) != NILLNODE) {	    job = (Job *) Lst_Datum (ln);	    /*	     * kill the child process with increasingly drastic signals to make	     * darn sure it's dead. 	     */#ifdef RMT_WANTS_SIGNALS	    if (job->flags & JOB_REMOTE) {		Rmt_Signal(job, SIGINT);		Rmt_Signal(job, SIGKILL);	    } else {		KILL(job->pid, SIGINT);		KILL(job->pid, SIGKILL);	    }#else	    KILL(job->pid, SIGINT);	    KILL(job->pid, SIGKILL);#endif /* RMT_WANTS_SIGNALS */	}    }        /*     * Catch as many children as want to report in at first, then give up     */    while (wait3(&foo, WNOHANG, (struct rusage *)0) > 0)	continue;    (void) unlink (tfile);}