diff --git a/daemonize/src/lib.rs b/daemonize/src/lib.rs index 4f0f758c..69f69e9e 100644 --- a/daemonize/src/lib.rs +++ b/daemonize/src/lib.rs @@ -374,16 +374,16 @@ impl Daemonize { set_sid()?; libc::umask(self.umask.inner); - if perform_fork()?.is_some() { - exit(0) - }; - let pid_file_fd = self .pid_file .clone() .map(|pid_file| create_pid_file(pid_file)) .transpose()?; + if perform_fork()?.is_some() { + exit(0) + }; + redirect_standard_streams(self.stdin, self.stdout, self.stderr)?; let uid = self.user.map(|user| get_user(user)).transpose()?; @@ -441,9 +441,9 @@ unsafe fn perform_fork() -> Result, ErrorKind> { } unsafe fn waitpid(pid: libc::pid_t) -> Result { - let mut child_ret = 0; - check_err(libc::waitpid(pid, &mut child_ret, 0), ErrorKind::Wait)?; - Ok(child_ret) + let mut child_stat = 0; + check_err(libc::waitpid(pid, &mut child_stat, 0), ErrorKind::Wait)?; + Ok(libc::WEXITSTATUS(child_stat)) } unsafe fn set_sid() -> Result<(), ErrorKind> {