Unix shell · 42 Seoul · 2-person team
minishell
명령 해석·프로세스 실행·파이프·리다이렉션을 구현한 Unix shell
프로젝트 소개
입력 문자열부터 프로세스 실행까지
- Bash의 핵심 동작을 재현하는 2인 팀 프로젝트
- 명령어 파싱과 실행기 구현 담당
문제 상황
파이프와 리다이렉션의 입출력 연결
ls | grep foo > result.txt처럼 파이프와 리다이렉션을 함께 사용하는 명령 처리- 명령별 표준 입출력 연결과 불필요한 파일 디스크립터의 종료 시점 관리 필요
해결 과정
해석·연결·실행 단계를 분리
- 토큰·따옴표·파이프라인 구조를 해석하는 scanner·parser 구현
- 환경 변수·경로 확장과 builtin 명령 처리 분리
- 파이프 생성 →
dup2()연결 → 불필요한 fd 닫기 → 자식 프로세스 실행 순으로 처리 fork()·execve()·waitpid()기반 프로세스 생성·실행·회수 구현
구현 범위
대화형 셸의 기본 기능
- builtin·환경 변수 확장·파이프·리다이렉션·시그널 처리 구현
- 실행 경로별 fd 연결·정리와 프로세스 생명주기 관리
명령 처리 구조
파싱과 실행의 경계
- 입력 → 토큰화·파싱 → 실행 계획 → builtin 또는 Unix 프로세스 API