#include "command.h" #include #include #include #include pid_t cmd_execute(const char *path, const char *const argv[]) { pid_t pid = fork(); if (pid == -1) { perror("fork"); return -1; } if (pid == 0) { execvp(path, (char *const *)argv); perror("exec"); _exit(1); } return pid; } SDL_bool cmd_terminate(pid_t pid) { return kill(pid, SIGTERM) != -1; } SDL_bool cmd_simple_wait(pid_t pid, int *exit_code) { int status; int code; if (waitpid(pid, &status, 0) == -1 || !WIFEXITED(status)) { // cannot wait, or exited unexpectedly, probably by a signal code = -1; } else { code = WEXITSTATUS(status); } if (exit_code) { *exit_code = code; } return !code; }