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); 
} 
関連する問題