728x90
반응형
trace02.txt
#
# trace02.txt - Process builtin quit command.
#
quit
WAIT
quit function이 주어지면 잘 해석하고 quit하는 지에 대한
testcase입니다.

tshref에 입력해보니 그냥 탈출하네요.
tsh.c

fgets를 통해 cmdline을 입력받으면
eval을 통해 해당 명령어를 넘깁니다.
eval을 이제 구현해야합니다.
일종의 가이드라인이 주어지자면,
quit, jobs, bg, fg같은
내장 명령어의 경우 shell에서 자체적으로 처리합니다.
그렇지 않은 ./myspin 같은 tsh 외부 프로그램들은
fork을 통해 처리해야합니다.
int builtin_cmd(char **argv)
{
if(!strcmp(argv[0], "quit")){
exit(0); // exit은 프로그램을 끝내기 때문에 return하지 않아도 OK
}
return 0; /* not a builtin command */
}
그렇게 내장 명령어들은 builtin_cmd 명령어를 통해 넘어와 처리해야합니다.
이때 내장 명령어가 아니면, 프로그램 경로로 고려하고 처리하는거죠.
이때 builtin_cmd는 내장 명령어가 아니면 0을 return하라고 하네요?
그러면
void eval(char *cmdline)
{
static char *Argv[MAXLINE], *Envp[MAXLINE];
char buf[MAXLINE];
if(!builtin_cmd(Argv)){
}
return;
}
이런 구조를 통해 내장 명령어가 아닌 경우만 block을 실행하도록 구현해봅시다.

잘 탈출할 겁니다.
728x90
반응형
'시스템 프로그래밍 > [Shell Lab]' 카테고리의 다른 글
| [Shell Lab] 5회 차: trace08.txt (0) | 2024.08.11 |
|---|---|
| [Shell Lab] 4회 차: trace05.txt, trace06.txt, trace07.txt (0) | 2024.08.10 |
| [Shell Lab] 3회 차: trace03.txt, trace04.txt (0) | 2024.08.10 |
| [Shell Lab] 1회 차: trace01.txt (0) | 2024.08.10 |
| [Shell Lab] 0회 차: 기본 세팅 (0) | 2024.08.10 |