/* * Exemplo de uso de execve. * Executa o programa passado como argumento. * Verifica status da execução do filho. */ #include #include #include #include int main(int argc, char **argv, char **envp) { int pid, status; if (argc < 2) { fprintf (stderr, "Uso: %s cmd arg1 ... argn\n", argv[0]); return 1; } if ((pid = fork()) == 0) { /* Processo filho */ execve(argv[1], &argv[1], envp); fprintf(stderr,"Não conseguiu executar execve.\n"); return 2; } else { /* Processo pai */ waitpid (pid, &status, 0); if (WIFEXITED(status) && WEXITSTATUS(status) == 0) printf ("Filho terminou sem problemas.\n"); else printf ("Filho não conseguiu executar corretamente.\n."); } return 0; }