2. 과제의 목적 및 요구사항
- 간단한 Shell의 구현으로 실제 CLI환경의
프로그램수행 알고리즘과 pipe의 작동 메커니즘을 알 수 있도록 한다.
1. Batch mode / Interaction mode 의 구분
2. 명령의 구분
2-1 일반명령 구분자
2-2 “|” (pipe) 명령 구분자
3. 기타 shell 명령 수행 시 오류 처리
3. 과제 분석 내용
“ | ”
“ tn”
./shell *argv[]
1 CMD String
For(num of command){
fork();
}
execvp
(command_tok[0], command_tok);
MODE
command
While(isExit)
*command_tok[ ]
4. 과제 분석 내용
1 CMD String
“ | “
Command 1 Command 2
“ “ or “t” or “n” “ “ or “t” or “n”
“|”
Child1{
dup2(pipe[1], 1);
execv();
exit();
}
Child2{
dup2(pipe[0], 0);
execv();
exit();
}
Parent{
wait(children);
}
out in
10. 과제 수행 단계 및 일정
• ~9/17 : pipe 구현 / debugging
• 예외처리 완료
ERR 종료 ERR 진행 예외처리
잘못된 개수의 argument 명령이 없음 명령줄이 빔
배치파일이 존재하지 않음 매우 긴 명령 명령줄에 불필요 공백
“ | | ” Quit없이 끝나는 Batch file
파이프가 양 끝 단에 존재 Ctrl + D 를 통한 종료
11. 과제 수행 환경 설정
• Main system
• Ubuntu 14.04 / vim 7.4
• Sub system
• Windows 8.1(Cygwin) / gvim 7.4