中庸
Published 2022. 11. 15. 21:57
[Shell Lab] Trace01 시스템 프로그래밍

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
profile

中庸

@짱일모

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!