사용한 개발 툴 : fedora core10 vi편집기
프로그램 작동 순서
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;
}
'공대생의 일기 > 2009年 1학기' 카테고리의 다른 글
[리눅스시스템프로그래밍]레코드의 이해 (0) | 2010.12.21 |
---|---|
[인터넷프로토콜]RIP, OSPF 테이블 갱신 (0) | 2010.12.21 |
[객체지향윈도우프로그래밍]MFC를 이용하여 도형그리기 (0) | 2010.12.21 |
[데이터베이스프로그래밍]인터넷뱅킹 서비스 (0) | 2010.12.21 |