ast_comparator/test/student_data/handout/shlab-handout/cases/reference_10_tsh.c
/* 
 * sigchld_handler - The kernel sends a SIGCHLD to the shell whenever
 *   a child job terminates (becomes a zombie), or stops because it
 *   received a SIGSTOP or SIGTSTP signal. The handler reaps all
 *   available zombie children, but doesn't wait for any other
 *   currently running children to terminate.  
 */
The kernel sends a SIGCHLD to the shell whenever
a child job terminates (becomes a zombie), or stops because it
received a SIGSTOP or SIGTSTP signal. The handler reaps all
available zombie children, but doesn't wait for any other
currently running children to terminate.
The kernel sends a SIGCHLD to the shell whenever a child job terminates ( becomes a zombie ) or stops because it received a SIGSTOP or SIGTSTP signal . The handler reaps all available zombie children but doesn ' t wait for any other currently running children to terminate .
void sigchld_handler(int sig) 
{
    pid_t pid;
    int jid;
    pause_flag = 0;
    while ((pid = waitpid(-1, NULL, WNOHANG)) > 0) {
        jid = pid2jid(pid);
        if (FG == jobs[jid-1].state) {
            pause_flag = 1;
        }
        deletejob(jobs, pid);
    }
    return;
}
void sigchld_handler ( int sig ) { pid_t pid ; int jid ; pause_flag = 0 ; while ( ( pid = waitpid ( -1 , NULL , WNOHANG ) ) > 0 ) { jid = pid2jid ( pid ) ; if ( FG == jobs [ jid - 1 ] . state ) { pause_flag = 1 ; } deletejob ( jobs , pid ) ; } return ; }
sigchld_handler - The kernel sends a SIGCHLD to the shell whenever
   a child job terminates (becomes a zombie), or stops because it
   received a SIGSTOP or SIGTSTP signal.
sigchld_handler - The kernel sends a SIGCHLD to the shell whenever a child job terminates ( becomes a zombie ) or stops because it received a SIGSTOP or SIGTSTP signal .