Advertisement
Guest User

Untitled

a guest
Nov 25th, 2014
159
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.24 KB | None | 0 0
  1. static int execute(char *my_argv[], struct ast *my_ast, int j)
  2. {
  3.     char *name = my_argv[0];
  4.     if (is_builtin(name))
  5.     {
  6.         fprintf(stderr, "TODO execute a builtin\n");
  7.         return 1;
  8.     }
  9.     int ret;
  10.     pid_t pid;
  11.     if ((pid = fork()) == 0)
  12.     {
  13.         if (my_ast->sons[my_ast->index - 1]->elt.type == REDIRECTION)
  14.         {
  15.             redirection(my_ast->sons[my_ast->index - 1]);
  16.             my_argv[j - 1] = NULL;
  17.         }
  18.         if (name[0] == '.' && name[1] == '/')
  19.         {
  20.             int ex = execvp(name, my_argv);
  21.             if (my_ast->sons[my_ast->index - 1]->elt.type == REDIRECTION)
  22.                 reinit(my_ast->sons[my_ast->index - 1]);
  23.             if (ex == -1)
  24.                 exit(1);
  25.             exit(0);
  26.         }
  27.         printf("commande executée\n");
  28.         int res = execvp(name, my_argv) == -1;
  29.         printf("commande executée\n");
  30.         if (my_ast->sons[my_ast->index - 1]->elt.type == REDIRECTION)
  31.             reinit(my_ast->sons[my_ast->index - 1]);
  32.         if (res)
  33.         {
  34.             fprintf(stderr, "%s: command not found\n", name);
  35.             exit(127);
  36.         }
  37.         exit(0);
  38.     }
  39.     else
  40.         waitpid(pid, &ret, 0);
  41.     return WEXITSTATUS(ret);
  42. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement