fork exec

fork는 프로세스를 복제하고 exec는 자식의 프로그램 이미지를 바꾼다

셸이 명령을 실행할 때는 보통 자식을 만든 뒤 그 자식 안에서 새 프로그램으로 교체한다.

프로세스 생성 흐름

process model

부모

현재 실행 중인 프로세스가 fork를 호출해 거의 같은 자식 프로세스를 만든다.

자식

자식은 반환값을 기준으로 자신이 복제된 실행 흐름임을 구분한다.

exec

자식은 exec로 코드와 데이터 이미지를 새 프로그램으로 바꾼다.

wait

부모는 wait로 자식 종료 상태를 회수해 좀비 프로세스를 막는다.

parentforkexecwait
읽는 법

fork와 exec를 한 덩어리로 외우기보다, 복제와 교체가 별도의 시스템 콜이라는 점을 분리해 읽으면 된다.