ݺߣ

ݺߣShare a Scribd company logo
분석설계보고서 
“Shell_Project” 
20100434 류아침
과제의 목적 및 요구사항 
- 간단한 Shell의 구현으로 실제 CLI환경의 
프로그램수행 알고리즘과 pipe의 작동 메커니즘을 알 수 있도록 한다. 
1. Batch mode / Interaction mode 의 구분 
2. 명령의 구분 
2-1 일반명령 구분자 
2-2 “|” (pipe) 명령 구분자 
3. 기타 shell 명령 수행 시 오류 처리
과제 분석 내용 
“ | ” 
“ tn” 
./shell *argv[] 
1 CMD String 
For(num of command){ 
fork(); 
} 
execvp 
(command_tok[0], command_tok); 
MODE 
command 
While(isExit) 
*command_tok[ ]
과제 분석 내용 
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
수행 모드
Pipe(), dup2() 수행 예시
일반 명령 구분자 
•
일반 명령 구분자 
•
중간 수행 결과
과제 수행 단계 및 일정 
• ~9/17 : pipe 구현 / debugging 
• 예외처리 완료 
ERR 종료 ERR 진행 예외처리 
잘못된 개수의 argument 명령이 없음 명령줄이 빔 
배치파일이 존재하지 않음 매우 긴 명령 명령줄에 불필요 공백 
“ | | ” Quit없이 끝나는 Batch file 
파이프가 양 끝 단에 존재 Ctrl + D 를 통한 종료
과제 수행 환경 설정 
• Main system 
• Ubuntu 14.04 / vim 7.4 
• Sub system 
• Windows 8.1(Cygwin) / gvim 7.4
질의 사항 
• 과제 분석 설계 과정에서 발생한 질의 사항을 기록
참고 자료 
• http://wiki.falinux.com/ (C라이브러리 함수 참조)

More Related Content

ѫ,설계보고서

  • 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
  • 12. 질의 사항 • 과제 분석 설계 과정에서 발생한 질의 사항을 기록
  • 13. 참고 자료 • http://wiki.falinux.com/ (C라이브러리 함수 참조)