프로세스를 복제한다
fork 뒤 부모와 자식은 반환값으로 서로를 구분하고 각자 실행을 계속한다.
fork는 현재 프로세스 문맥을 자식으로 복제하고, exec는 그 자식의 주소 공간을 새 프로그램으로 바꾼다. shell 실행 모델은 이 조합으로 설명된다.
fork 뒤 부모와 자식은 반환값으로 서로를 구분하고 각자 실행을 계속한다.
exec 전 자식은 stdin/stdout 리다이렉션과 불필요한 파일 descriptor close를 처리한다.
exec 성공 뒤에는 이전 코드로 돌아오지 않고 새 프로그램의 entry point가 실행된다.
fork() -> child: dup2()/close() -> execve()
parent: close unused fd -> waitpid()