fork server

fork 서버는 fd 소유권을 나눠야 연결 누수가 없다

fork 후 부모와 자식은 같은 fd를 참조하므로, 각 프로세스가 쓰지 않는 fd를 바로 닫아야 한다.

1 parentacceptconnected fd를 얻음
2 forkfd 복사부모와 자식이 같은 open file description 참조
3 parentconnected fd close다음 accept를 계속 처리
4 childlisten fd close자신의 클라이언트만 담당
5 childserve and closeread/write 뒤 connected fd 정리
프로세스
유지할 fd
닫을 fd
Parent
listen fd
child가 맡은 connected fd
Child
자기 connected fd
listen fd
종료 처리
SIGCHLD 또는 wait
좀비 프로세스 방지
핵심close를 늦추면 상대가 끊어도 참조가 남아 EOF가 늦게 보이거나 fd가 누수된다.