이 소스에 대해서 알고 싶습니다. 도와주세요 ㅠ

tlqkdto89의 이미지

  #include <string.h> 
#include <unistd.h> 
#include <stdio.h> 
#include <stdlib.h> 
#define MAX_CMD_ARG 10 
 
 const char *prompt = "myshell> "; 
char* cmdvector[MAX_CMD_ARG]; 
char  cmdline[BUFSIZ]; 
 
 void fatal(char *str) 
{ 
    perror(str); 
    exit(1); 
} 
 
 int makelist(char *s, const char *delimiters, char** list, int MAX_LIST) 
{     
      int i = 0; 
      int numtokens = 0; 
      char *snew = NULL; 
 
       if((s==NULL) || (delimiters==NULL)) 
    { 
        return -1; 
    } 
 
     snew = s + strspn(s, delimiters);     
      if((list[numtokens] = strtok(snew, delimiters)) == NULL ) 
        { 
        return numtokens; 
    } 
 
      numtokens = 1; 
 
       while(1) 
    { 
             if((list[numtokens] = strtok(NULL, delimiters)) == NULL) 
        { 
            break; 
        } 
             if(numtokens == (MAX_LIST-1)) 
        {  
             return -1; 
        }         
             numtokens++; 
      } 
      return numtokens; 
} 
 
 int main(int argc, char**argv) 
{ 
      int i = 0; 
      pid_t pid; 
      while (1)  
     {       
           fputs(prompt, stdout); 
        fgets(cmdline, BUFSIZ, stdin); 
        cmdline[ strlen(cmdline) -1] ='\0'; 
 
         switch(pid=fork()) 
        { 
        case 0: 
            makelist(cmdline, " \t", cmdvector, MAX_CMD_ARG); 
            execvp(cmdvector[0], cmdvector); 
            fatal("main()"); 
        case -1: 
              fatal("main()"); 
        default: 
            wait(NULL); 
        } 
      } 
      return 0; 
}


이 소스를 실행시켰을 때 ls, rm, touch, gedit 같은 명령어는 어떻게 알고 실행되는지. 다른 명령어는
왜 실행되지 않는지가 제일 궁금합니다.. 이 소스에 대한 부분적인 상세한 내용을 알고 싶습니다.
snowall의 이미지

저는 이게 뭐하는 프로그램인지가 더 궁금한데요...

음... ls, rm, touch, gedit같은 명령어는 "왜" 언급하신건가요?

피할 수 있을때 즐겨라! http://melotopia.net/b

세벌의 이미지

man execvp