#include <stdio.h>
#include <string.h>
#define MAXLINE 80

int main()
{ char cmd[MAXLINE];
 void background(char *cmd);
 for (;;)
   {   printf("mysh ready%%");  /* prompt              */
   gets(cmd);               /* read command        */
   if ( strcmp(cmd,"exit") == 0 )
     return(0);
   background(cmd);         /* start background job */
   }
}

#define WHITE "\t \n"
#define MAXARG 20

void background(char *cmd)
{ char *argv[MAXARG];
 int id, i = 0;
 /* to fill in argv */
 argv[i++] = strtok(cmd, WHITE);
 while ( i < MAXARG &&
	 (argv[i++] = strtok(NULL, WHITE)) != NULL );
 if ( (id = fork()) == 0)   /* child executes background job */
   {   execv(argv[0], argv);
   _exit(1);  /* execv failed */
   }
 else if ( id < 0 )
   {   fprintf(stderr, "fork failed\n");
   perror("background:");
   }
}
