#include #include #include #include #include #include #include int execute_me(char *cmd, char **argv){ if (!cmd || !argv || !*argv) return 1; int wstatus; pid_t pid = fork(); if (pid < 0) return -1; // Child else if (pid == 0) { if (cmd != *argv) exit(-1); else exit(execvp(cmd, argv)); } // Daddy else { if(waitpid(pid, &wstatus, 0) == -1) return -1; if(WIFEXITED(wstatus)) return WEXITSTATUS(wstatus); return 0; } } /* int main(){ char *argv[] = {"ls", "-l", NULL}; int r1 = execute_me("ls", argv); printf("%d\n", r1); int r2 = execute_me("wrong", argv); printf("%d\n", r2); }*/