-
[Shell Lab] Trace01시스템 프로그래밍 2022. 11. 15. 21:57
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