0
먼저 아이를 무언가로 포크로 교환하면 이고 waitpid(-1, &child_status, WNOHANG)
을 사용합니다. 부모가 자식을 끝내기를 기다리지 않고 부모가 계속할 수있게합니다.waitpid의 경우 하위 프로세스가 완료되었는지 어떻게 알 수 있습니까?
자녀가 절차를 마친 시점을 어떻게 알 수 있습니까?
먼저 아이를 무언가로 포크로 교환하면 이고 waitpid(-1, &child_status, WNOHANG)
을 사용합니다. 부모가 자식을 끝내기를 기다리지 않고 부모가 계속할 수있게합니다.waitpid의 경우 하위 프로세스가 완료되었는지 어떻게 알 수 있습니까?
자녀가 절차를 마친 시점을 어떻게 알 수 있습니까?
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);
}