int main(int argc,char *argv[]) { int i; char *buf = NULL; int argcount = 0; char arglist[100][256]; char *arg[20]; int pid; int stat_val; buf = (char *)malloc(256); while(1) { memset(buf,0,256); my_print(); // fflush(NULL); //处理输入参数的部分 get_input(buf); for(i = 0;i < 100;i++) { arglist[i][0] = '\0'; } argcount = 0; explain_input(buf,&argcount,arglist); for(i = 0;i < argcount;i++) arg[i] = &arglist[i][0]; for(i = 0;i < argcount;i++) printf("%s ",arg[i]); if((pid = fork()) < 0) { perror("fork error"); return 0; } switch(pid) { case 0: execvp(arg[0],arg); exit(0); break; default: if(waitpid(0,&stat_val,0) == -1) perror("error"); } } exit(0); }
int main(int argc ,char **argv) { int i; int argcount = 0; char arglist[100][256]; char **arg =NULL; char *buf = NULL; buf =(char *)malloc (256); if(buf == NULL){ perror("malloc failed "); exit(-1 ); } while(1){ //将buf所指向的空间清零 memset(buf ,0 , 256); printf_prompt(); get_input( buf); //若输入的命令为exit或logout则退出本程序 if(strcmp(buf , "exit\n") == 0 || strcmp(buf , "logout\n") == 0) break ; for ( i=0 ; i <100 ;i++ ) { arglist[i][0] = '\0'; } argcount = 0; explain_input(buf,&argcount,arglist); do_cmd(argcount ,arglist ); } if(buf != NULL ) { free(buf ); buf = NULL; } exit(0); }