쉘은 사용자의 명령을 읽고 실행하는 프로그램입니다.
int main()
{
char cmdline[MAXLINE]; /* command line */
while (1) { /* read */
printf("> ");
fgets(cmdline, MAXLINE, stdin);
if (feof(stdin))
exit(0);
/* evaluate */
eval(cmdline); }
}
eval
함수가 명령을 실행하는 역할을 합니다.Simple Shell eval()
커널은 백그라운드 프로세스가 종료될 때 부모 프로세스(쉘)에게 시그널을 보내 이를 알립니다.
쉘은 시그널 핸들러를 등록하여 해당 시그널을 처리하고, 좀비 프로세스를 정리할 수 있습니다.
: 모든 프로세스는 하나의 그룹에 속합니다.
ctrl-c (ctrl-z) : SIGINT(SIGTSTP) 을 foreground process goup에 있는 모든 작업에게 준다.