2020학년도 시스템프로그래밍 Shell lab 보고서
- 최초 등록일
- 2020.11.26
- 최종 저작일
- 2020.11
- 20페이지/ 어도비 PDF
- 가격 4,500원
소개글
2020학년도 국립대 컴퓨터공학과 시스템프로그래밍 과목의 3번째 랩과제인 shell lab의 보고서 및 코드 자료입니다. trace00부터 trace12까지 해결하는 과정을 포함하고 있습니다.
시스템프로그래밍 과목이 꽤 추상적이라 보고서로 설명하기 쉽지 않은데 이 자료를 참고하시면 보고서를 쓰시는 데 도움이 될 것이라 생각합니다.
목차
1. trace00 ~ trace12 플로우차트, 해결 과정 설명, 실행 결과 화면
본문내용
trace 해결 방법 설명
trace00은 EOF(‘Ctrl+D’를 입력했을 때를 의미함)가 입력되면 쉘이 종료되도록 하는 것이 목적이다. 하지만 이 기능은 tsh.c의 main()에 아래와 같이 파일의 끝(EOF)에 도달했으면 1을 반환하는 feof() 함수를 사용하는 조건문으로 이미 구현되어 있기 때문에 따로 코드를 추가하지 않아도 tshref와 동일한 동작을 tsh에서 수행할 수 있었다.
trace 해결 방법 설명
trace01은 입력받은 명령어가 built-in 명령어 중 하나인 ‘quit’이면 쉘을 종료하는 것이 목적이었다. 명령어를 입력받은 다음, eval() 함수를 사용하여 입력받은 명령어를parseline() 함수를 통해 파싱한 다음, 파싱된 명령어를 builtin_cmd() 함수로 전달하여 해당 명령어가 ‘quit’ 이면 쉘을 종료하도록 builtin_cmd() 함수를 작성하였다.
strcmp() 함수는 c언어의 <string.h> 헤더파일에 정의되어 있으며, 매개변수로 전달받은 두개의 문자열을 비교하여 동일한 문자열이면 0을 리턴하는 함수이다. 따라서 매개변수로 입력받은 명령어 cmd와 문자열 “quit”을 strcmp() 함수에 전달하여 명령어가 “quit”이어서 0을 반환하면 조건문을 만족시켜 쉘을 종료하도록 strcmp() 앞에 ‘!’를 붙였다.
참고로 변수 cmd에 argv[0]을 저장하는데, argv[0]는 입력받은 명령어에서 공백 이전까지의 문자열을 읽은 값을 나타낸다. 예를 들어 명령어 ‘quit B’가 입력되면 argv[0]은 quit을 나타내며, 좀 더 자세히 들여다보면 argv[0][0]=q, argv[0][1]=u, argv[0][2]=i, argv[0][3]=t 과 같이 명령어가 파싱된다.
참고 자료
없음