더블 포크와 데몬
2018/01/04
- 포크후 부모와 자식이 생긴다.
- 부모가 먼저 죽으면 자식의 부모는 init가 된다.
- 부모는 살아있고 자식이 먼저 죽으면 자식은 좀비가 된다.
- 부모가 waitpid를 호출 해주면 좀비를 해소한다. 안 하면 좀비가 쌓임
- 에...? 그럼 부모는 항상 자식이 죽기를 기다려야 해?
그래서 더블 포크
- 포크후 부모와 자식이 생긴다.
- 또 포크하면 손자가 생긴다.
- 자식이 죽는다. 손자의 부모는 init가 된다.
- 부모는 waitpid로 자식의 죽음을 확인하여 좀비가 되지 않게 한다.
즉, 부모가 먼저 죽으면 항상 문제가 없다. 그런데 자식이 먼저 죽으면 좀비가 되니까 이를 더블 포크로 막는다. 그런데 통상 부모가 슉 죽어버리면 바로 init를 받아서 데몬화 잘 되고 좀비화 될 일은 없다.
문제는 세션리더. 포크를 한 번만 하면 데몬으로 잘 도는 것 같지만 실행시킨 터미널을 닫으면 같이 죽는다.
[t:/] is not "technology - root". dawnsea, rss