void execute_ligne_commande(){ int flag; int nb; char *** result = ligne_commande(&flag,&nb); if(result != NULL){ char ** argv = result[0]; if(strcmp(argv[0],"exit")==0) exit(1); affiche(result); int f; if((f=fork())==0){ execvp(argv[0],argv); perror("execvp"); exit(1); } int status; if(flag == 0){ printf("bloquant\n"); waitpid(f,&status,0); } else { printf("non bloquant\n"); waitpid(f,&status,WNOHANG); } libere(result); } }
void execute_ligne_commande() { int flag, nb, i, pid; char ***argv = ligne_commande(&flag, &nb); if (flag == -1) return; for(i = 0 ; i < nb ; i++) { pid = fork(); if(pid == 0) { execvp(argv[i][0], argv[i]); printf("iutshell: %s: commande introuvable\n", argv[i][0]); exit(1); } else { if (flag == 0) waitpid(pid, NULL, 0); } } }
void execute_ligne_commande(){ int nb,flag, status, pid; char *** cmd = ligne_commande(&flag, &nb); if(cmd == NULL) return; if(flag==-1) perror(cmd[0][0]); if(strcmp(cmd[0][0], "exit")==0) exit(1); if((pid=fork()) == 0) { execvp(cmd[0][0], cmd[0]); perror(cmd[0][0]); exit(-1); } else if(flag != 1) { pid = waitpid(pid, &status,0); if(pid == -1) perror("waitpid error"); } libere(cmd); }