2026-01-24
왜 “새로 만들기”가 아니라 “복제(fork)”인가?
핵심 이유: 설정을 자동으로 물려받기 위해
쉘(터미널)이 가진 것들:
- 현재 작업 디렉토리
- 환경 변수 (PATH, HOME 등)
- 열린 파일들 (표준 입출력)
- 권한/사용자 정보
→ fork()하면 이 모든 설정이 자동 상속됨!
fork+exec 분리의 강점
fork() → [중간에 설정 변경 가능!] → exec()
예: ls > output.txt
- fork() → 복제 생성
- 복제: 출력을 파일로 변경 (exec 전이라 가능!)
- exec(“ls”) → ls는 그냥 출력만 하면 됨
만약 create_process() 방식이었다면?
- 환경변수, 작업 디렉토리, 리다이렉션 등 매번 명시적 설정 필요
- API가 복잡해지고 유연성 감소
정리
| 함수 | 역할 |
|---|---|
| fork() | 나 자신을 복사 (설정 상속) |
| exec() | 다른 프로그램으로 변신 |
설계 철학: “간결한 API + 조합의 자유”