Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- static int execute(char *my_argv[], struct ast *my_ast, int j)
- {
- char *name = my_argv[0];
- if (is_builtin(name))
- {
- fprintf(stderr, "TODO execute a builtin\n");
- return 1;
- }
- int ret;
- pid_t pid;
- if ((pid = fork()) == 0)
- {
- if (my_ast->sons[my_ast->index - 1]->elt.type == REDIRECTION)
- {
- redirection(my_ast->sons[my_ast->index - 1]);
- my_argv[j - 1] = NULL;
- }
- if (name[0] == '.' && name[1] == '/')
- {
- int ex = execvp(name, my_argv);
- if (my_ast->sons[my_ast->index - 1]->elt.type == REDIRECTION)
- reinit(my_ast->sons[my_ast->index - 1]);
- if (ex == -1)
- exit(1);
- exit(0);
- }
- printf("commande executée\n");
- int res = execvp(name, my_argv) == -1;
- printf("commande executée\n");
- if (my_ast->sons[my_ast->index - 1]->elt.type == REDIRECTION)
- reinit(my_ast->sons[my_ast->index - 1]);
- if (res)
- {
- fprintf(stderr, "%s: command not found\n", name);
- exit(127);
- }
- exit(0);
- }
- else
- waitpid(pid, &ret, 0);
- return WEXITSTATUS(ret);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement