提交 b10e0616 编写于 作者: J Jeremy Soller

Add try_wait to Redox process

上级 87809628
......@@ -501,4 +501,18 @@ pub fn wait(&mut self) -> io::Result<ExitStatus> {
self.status = Some(ExitStatus(status as i32));
Ok(ExitStatus(status as i32))
}
pub fn try_wait(&mut self) -> io::Result<ExitStatus> {
if let Some(status) = self.status {
return Ok(status)
}
let mut status = 0;
let pid = cvt(syscall::waitpid(self.pid, &mut status, syscall::WNOHANG))?;
if pid == 0 {
Err(io::Error::from_raw_os_error(syscall::EWOULDBLOCK))
} else {
self.status = Some(ExitStatus(status as i32));
Ok(ExitStatus(status as i32))
}
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册