나는 2 개의 평행 작업 포크를 만들고 끝내기를 기다린다.포크와 pid 체크 바깥의 아이들을 기다리는 것
for (int i = 0; i < 2; i++) {
pid_t pid = fork();
if(pid < 0) {
fprintf(stderr,"Cannot fork!");
exit(EXIT_FAILURE);
}
else if(pid == 0) {
switch(i)
{
case 0:
//first child
exit(EXIT_SUCCESS);
break;
case 1:
//second child
exit(EXIT_SUCCESS);
break;
}
break;
}
else {
//parent
}
}
문제는 주 프로그램이 하위 프로그램보다 먼저 종료된다는 것입니다. 다른 부모 파트에 대기 (0)를 추가하면 모든 프로세스가 대기하므로 동시에 하나씩 작동하지 않습니다. 루프 뒤에 wait() 또는 waitpid()를 넣을 수 있다고 가정했으나 작동하지 않습니다. 나는 포크 후 부모가 정상적으로 계속해서 wait()가 루프와 if-else 구조 외부에있을 때 왜 기다리지 않는지 생각했다.
죄송합니다. 미리 감사드립니다.
많은 감사를 : 이렇게 될 것입니다 추가 할 수있는 루프 (나는 또한 당신이 당신의
stdout
에 그것을 관찰 할 수 있도록printf
추가). 각 종료 상태를 기다리는 것을 몰랐습니다. 나는 이것이 어떻게 작동하는지 상상할 문제가있다. 대단히 감사합니다 :-) – Hitokage