From b10e06166ef8a71edf5cf1d61a94b6639880eb05 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 13 Jan 2017 15:41:50 -0700 Subject: Add try_wait to Redox process --- src/libstd/sys/redox/process.rs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'src/libstd/sys') diff --git a/src/libstd/sys/redox/process.rs b/src/libstd/sys/redox/process.rs index 849f51013e6..50dcd44b42e 100644 --- a/src/libstd/sys/redox/process.rs +++ b/src/libstd/sys/redox/process.rs @@ -501,4 +501,18 @@ impl Process { self.status = Some(ExitStatus(status as i32)); Ok(ExitStatus(status as i32)) } + + pub fn try_wait(&mut self) -> io::Result { + 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)) + } + } } -- cgit 1.4.1-3-g733a5