SIGCHLD 핸들러에 wait, waitpid 처리를 해줬는데도 child exit시에 zombie가 생긴다?

|

mother가 child를 생성(fork 등으로)하고, child가 종료되는 경우, mother쪽에서 wait 혹은 waitpid를 호출해줘야 child의 자원을 돌려받고 child는 완전히 free되게 되는데, 이 처리는 구현의 편의성에 의해서 SIGCHILD 핸들러에 wait 혹은 waitpid 처리를 해 주는 경우가 많다.

간단한 예를 들어보면,

참고 사이트 : 조인시 위키: Zombie 프로세스 에 대한 고찰 (Zombie 프로세스에 대한 설명과 wait의 메카니즘에 대해서 간단하게 나와있다.)
참고 사이트 : 중복 실행 막기 (KLDP의 QnA중 일부이며, Inter Process Lock의 일부와 Mutex에 대해 약간은 참고할만 하다.)

And