Lines Matching defs:WaitStatus
86 /// matching on `WaitStatus`.
88 pub enum WaitStatus {
133 impl WaitStatus {
134 /// Extracts the PID from the WaitStatus unless it equals StillAlive.
136 use self::WaitStatus::*;
194 impl WaitStatus {
195 /// Convert a raw `wstatus` as returned by `waitpid`/`wait` into a `WaitStatus`
203 /// Convert a `wstatus` obtained from `libc::waitpid` into a `WaitStatus`:
206 /// use nix::sys::wait::WaitStatus;
209 /// let status = WaitStatus::from_raw(pid, 0x0002);
210 /// assert_eq!(status, Ok(WaitStatus::Signaled(pid, Signal::SIGINT, false)));
212 pub fn from_raw(pid: Pid, status: i32) -> Result<WaitStatus> {
214 WaitStatus::Exited(pid, exit_status(status))
216 WaitStatus::Signaled(pid, term_signal(status)?, dumped_core(status))
220 fn decode_stopped(pid: Pid, status: i32) -> Result<WaitStatus> {
223 WaitStatus::PtraceSyscall(pid)
225 WaitStatus::Stopped(pid, stop_signal(status)?)
227 WaitStatus::PtraceEvent(pid, stop_signal(status)?,
232 fn decode_stopped(pid: Pid, status: i32) -> Result<WaitStatus> {
233 Ok(WaitStatus::Stopped(pid, stop_signal(status)?))
240 WaitStatus::Continued(pid)
244 /// Convert a `siginfo_t` as returned by `waitid` to a `WaitStatus`
261 unsafe fn from_siginfo(siginfo: &libc::siginfo_t) -> Result<WaitStatus> {
264 return Ok(WaitStatus::StillAlive);
273 libc::CLD_EXITED => WaitStatus::Exited(pid, si_status),
274 libc::CLD_KILLED | libc::CLD_DUMPED => WaitStatus::Signaled(
280 WaitStatus::Stopped(pid, Signal::try_from(si_status)?)
282 libc::CLD_CONTINUED => WaitStatus::Continued(pid),
286 WaitStatus::PtraceSyscall(pid)
288 WaitStatus::PtraceEvent(
308 ) -> Result<WaitStatus> {
309 use self::WaitStatus::*;
328 res => WaitStatus::from_raw(Pid::from_raw(res), status),
335 pub fn wait() -> Result<WaitStatus> {
370 pub fn waitid(id: Id, flags: WaitPidFlag) -> Result<WaitStatus> {
387 unsafe { WaitStatus::from_siginfo(&siginfo) }