부모가 모든 자식 프로세스가 끝날 때까지 기다리는 방법?
저는 fork를 계속하기 전에 부모가 모든 자식 프로세스가 끝날 때까지 기다리는 방법을 밝힐 수 있기를 바랍니다. 실행하려는 정리 코드가 있지만 이러한 일이 발생하기 전에 자식 프로세스가 반환되어야 합니다.
for (int id=0; id<n; id++) {
if (fork()==0) {
// 자식
exit(0);
} else {
// 부모
...
}
...
}
3개의 답변 중 1개의 답변
pid_t child_pid, wpid;
int status = 0;
// 아버지 코드 (자식 프로세스가 시작하기 전에)
for (int id=0; id<n; id++) {
if ((child_pid = fork()) == 0) {
// 자식 코드
exit(0);
}
}
while ((wpid = wait(&status)) > 0); // 이 방법으로 아버지는 모든 자식 프로세스를 기다립니다.
// 아버지 코드 (모든 자식 프로세스가 끝난 후에)
wait
는 하위 프로세스가 종료 될 때까지 대기하고 해당 하위 프로세스의 pid
를 리턴합니다. 오류가 발생하면 (예 : 하위 프로세스가 없는 경우) -1
이 반환됩니다. 따라서 기본적으로 코드는 wait
(대기) 오류가 끝날 때까지 자식 프로세스가 완료될 때까지 계속 기다렸다가 모두 완료되었음을 알 수 있습니다.
'도움받은 정보' 카테고리의 다른 글
HH:MM:SS 시간 문자열에 대한 정규식 패턴 (0) | 2021.02.08 |
---|---|
Stunnel (0) | 2020.12.23 |
"함수는 일급 객체이다." 는 정확히 무슨 의미입니까? (0) | 2019.12.09 |
PHP에서 UTC 시간대를 다른 시간대로 변환하기 (0) | 2019.07.18 |
구글 클라우드 / Compute 인스턴스로부터 MariaDB에 접근할 수 없습니다. (0) | 2019.03.11 |