2016-11-06 11 views

답변

2

SIGCHLD에 대한 신호 처리기는 하위 프로세스가 종료 될 때 자동으로 전송되도록 설정할 수 있습니다.

신호 프로세서는 프로그램의 다른 부분에서 주기적으로 확인할 수있는 전역 플래그를 설정할 수 있습니다. 깃발이 놓인 경우에, 아이들의 출구 상태를 얻기 위하여 wait 또는 waitpid를 부르십시오.

int child_exit_flag = 0; 

void child_exit(int sig) 
{ 
    child_exit_flag = 1; 
} 

... 

signal(SIGCHLD, child_exit); 

... 

if (child_exit_flag) { 
    pid_t pid; 
    int status; 

    child_exit_flag = 0; 
    pid = wait(&status); 
    printf("child pid %d exited with status %d\n", pid, status); 
}