diff options
Diffstat (limited to 'src/Program.cpp')
-rw-r--r-- | src/Program.cpp | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/Program.cpp b/src/Program.cpp index 5220a4c..57d7c61 100644 --- a/src/Program.cpp +++ b/src/Program.cpp @@ -76,6 +76,9 @@ public: thread_local CurrentThreadProgram current_thread_program; int exec_program_pipe(const char **args, ReadProgram *read_program) { + read_program->pid = -1; + read_program->read_fd = -1; + /* 1 arguments */ if(args[0] == NULL) return -1; @@ -192,8 +195,9 @@ int exec_program(const char **args, ProgramOutputCallback output_callback, void int wait_program(pid_t process_id) { int status; if(waitpid(process_id, &status, 0) == -1) { + int err = -errno; perror("waitpid failed"); - return -errno; + return err; } if(!WIFEXITED(status)) @@ -206,8 +210,9 @@ int wait_program_non_blocking(pid_t process_id, int *status) { int s; int wait_result = waitpid(process_id, &s, WNOHANG); if(wait_result == -1) { + int err = -errno; perror("waitpid failed"); - *status = -errno; + *status = err; return 0; } else if(wait_result == 0) { /* the child process is still running */ |