#include #include #include #include #include #include #define BUFSIZE 1024 void parser(char* buf, char** args) ; void execution(char** args) ; int main(int argc, char* argv[]) { char buf[BUFSIZE]; char* args[64]; for(;;) { fflush(stdin); printf("Command:\n"); // if(fgets(buf, sizeof(buf),stdin)==NULL) { printf("\n"); exit(0); } parser(buf,args); execution(args); } } void parser(char* buf, char** args) { while (*buf != '\0') { while((*buf==' ')||(*buf=='\t')||(*buf=='\n')) { *buf++ = '\0'; } *args++=buf; while ((*buf!='\0') && (*buf!=' ') && (*buf!='\t') && (*buf!='\n')) { buf++; } } *--args = NULL; } void execution(char** args) { int pid, status ; if((pid=fork())<0) { perror("fork"); exit(1); } if(pid==0) { execvp(*args,args); perror("*args"); exit(1); } while (wait(&status)!=pid); }