Trace01 은 Shell 의 명령어 중 Built-in 명령어인 quit을 구현하는 문제입니다.
tsh 를 실행한 후 quit을 입력하면, 쉘이 종료되도록 구현하면 됩니다.
main 함수에서 eval(cmdline) 가 호출되므로 eval 함수의 definition 을 살펴봅시다.
void eval(char *cmdline) { } 입니다. eval 함수 내에서 cmdline을 parsing하고 builtin_cmd(혹은 builtin_command) 함수로 전달해 빌트인 명령어인지 확인할 수 있도록 합니다. 그리고 builtin_cmd 함수 내에서는 명령어가 quit 이면 쉘을 종료할 수 있는 코드를 작성해주도록 합니다.
최종코드
void eval(char *cmdline) {
char *argv[MAXARGS]; // command 저장
parseline(cmdline, argv);
//parsing된 명령어를 전달
builtin_cmd(argv);
return;
}
int builtin_cmd(char **argv) {
char *cmd = argv[0];
if (!strcmp(cmd, "quit")) {
// if command == quit
exit(0); // terminate shell
}
return 0;
}
'시스템 프로그래밍' 카테고리의 다른 글
[Shell Lab] Trace05, Trace 06 (0) | 2022.11.15 |
---|---|
[Shell Lab] Trace02, Trace03, Trace04 (0) | 2022.11.15 |
[Shell Lab] Trace00 (0) | 2022.11.15 |
[System Programming] Basic Skill for Shell Lab (0) | 2022.11.15 |
[System Programming] Process (0) | 2022.11.15 |