#include <stdio.h> 
#include <string.h> 
#include <sys/types.h> 
#include <unistd.h> 
#define MAXARG 7 
 
main() 
{ 
    char buf[256]; 
    char *arg[MAXARG]; 
    char *s; 
    char *save; 
    int argv; 
    static const char delim[] = " \t\n"; // °ø¹é, ÅÇ, °³ÇàÀ¸·Î ±¸ºÐ 
    int pid, status; 
 
    while(1) { // ¹«ÇÑ ¹Ýº¹ 
       printf("myshell: ");  	// ÇÁ·ÒÇÁÆ® Ãâ·Â 
       gets(buf); 
       argv = 0; 
       s = strtok_r(buf, delim, &save);  // ¹®ÀÚ¿­¿¡¼­ ±¸ºÐÀÚ ±âÁØÀ¸·Î ´Ü¾î ºÐ¸®

       while(s) { 
          arg[argv++] = s; 
          s = strtok_r(NULL, delim, &save); 
       } 
       arg[argv] = (char *)0; // ÀÎ¼ö°¡ ´õ ¾øÀ½
 
       if (!strcmp(arg[0], "quit"))  // ´Ü¾î°¡ ¡®quit¡¯ÀÌ¸é while ¹® ¹þ¾î³²
           break; 
 
       if ((pid=fork()) == -1)  // fork È£Ãâ¿¡ ½ÇÆÐÇÏ¸é 
          perror("fork failed"); 
       else if (pid != 0) {    	// ºÎ¸ð : ÀÚ½Ä ÇÁ·Î¼¼½º°¡ Á¾·áµÇ±â¸¦ ±â´Ù¸² 
          pid = wait(&status); 
       } else { 		// ÀÚ½Ä:  execvp¸¦ ÀÌ¿ëÇÏ¿© arg[0] ½ÇÇà 
          execvp(arg[0], arg); 
       } 
    } 
    exit(0); 
}
