사용한 개발 툴 : fedora core10 vi편집기
2009년 6월 4일

프로그램 작동 순서

a. 프로그램을 실행시키면 "mysh %% " 프롬프트가 출력된다.

b. 사용자로부터 명령어를 입력받고, 공백문자 “ ” 를 토큰으로 입력받은 명령을 명령어와 옵션으로 분리해낸다.

c. 자식 프로세스를 생성하고 명령어의 처리를 넘긴다.

- 자식 프로세스는 명령어가 실행될 절대경로를 설정하고 명령어와 합쳐 실행 가능 하도록 한다.

d. 부모 프로세스는 자식 프로세스가 명령어를 실행하고 종료되면 다시 프롬프트를 출력하여 다음 명령을 대기한다.


int main(int argc, char *argv[], char *envp[])
{
char cmd[80]; // variable to using input data from user
char *vecl[10]; // variable to using factor for function execve();
setbuf(stdout, NULL); 
printf("mysh %% ");
while(fgets(cmd, 80, stdin)!=NULL){
int i=0;
cmd[strlen(cmd)-1]='\0';
memset(vecl, 0x00, sizeof(vecl)); 
char *token; // divide input data string
token=strtok(cmd, " ");
while(token){ 
vecl[i]=token; 
token=strtok(NULL, " ");
i++;
}

if(fork()==0){
char path[100]="/bin/"; // concatenate path and vecl[0] variables to using command
strcat(path, vecl[0]); 
execve(path, vecl, envp);
exit(0);
}
wait(NULL);
printf("mysh %% ");
}
return 0;
}




Posted by 검지발가락♡