Enum nix::sys::wait::WaitStatus[][src]

[]
pub enum WaitStatus {
    Exited(Pidi32),
    Signaled(PidSignalbool),
    Stopped(PidSignal),
    PtraceEvent(PidSignalc_int),
    PtraceSyscall(Pid),
    Continued(Pid),
    StillAlive,
}
[]

Possible return values from wait() or waitpid().

Each status (other than StillAlive) describes a state transition in a child process Pid, such as the process exiting or stopping, plus additional data about the transition if any.

Note that there are two Linux-specific enum variants, PtraceEvent and PtraceSyscall. Portable code should avoid exhaustively matching on WaitStatus.

Variants

Exited(Pidi32)
[]

The process exited normally (as with exit() or returning from main) with the given exit code. This case matches the C macro WIFEXITED(status); the second field is WEXITSTATUS(status).

Signaled(PidSignalbool)
[]

The process was killed by the given signal. The third field indicates whether the signal generated a core dump. This case matches the C macro WIFSIGNALED(status); the last two fields correspond to WTERMSIG(status) and WCOREDUMP(status).

Stopped(PidSignal)
[]

The process is alive, but was stopped by the given signal. This is only reported if WaitPidFlag::WUNTRACED was passed. This case matches the C macro WIFSTOPPED(status); the second field is WSTOPSIG(status).

PtraceEvent(PidSignalc_int)
[]

The traced process was stopped by a PTRACE_EVENT_* event. See nix::sys::ptrace and ptrace(2) for more information. All currently-defined events use SIGTRAP as the signal; the third field is the PTRACE_EVENT_* value of the event.

PtraceSyscall(Pid)
[]

The traced process was stopped by execution of a system call, and PTRACE_O_TRACESYSGOOD is in effect. See ptrace(2) for more information.

Continued(Pid)
[]

The process was previously stopped but has resumed execution after receiving a SIGCONT signal. This is only reported if WaitPidFlag::WCONTINUED was passed. This case matches the C macro WIFCONTINUED(status).

StillAlive
[]

There are currently no state changes to report in any awaited child process. This is only returned if WaitPidFlag::WNOHANG was used (otherwise wait() or waitpid() would block until there was something to report).

Implementations

impl WaitStatus[src][]

pub fn pid(&self) -> Option<Pid>[src][]

Extracts the PID from the WaitStatus unless it equals StillAlive.

impl WaitStatus[src][]

pub fn from_raw(pid: Pid, status: i32) -> Result<WaitStatus>[src][]

Convert a raw wstatus as returned by waitpid/wait into a WaitStatus

Errors

Returns an Error corresponding to EINVAL for invalid status values.

Examples

Convert a wstatus obtained from libc::waitpid into a WaitStatus:

use nix::sys::wait::WaitStatus;
use nix::sys::signal::Signal;
let pid = nix::unistd::Pid::from_raw(1);
let status = WaitStatus::from_raw(pid, 0x0002);
assert_eq!(status, Ok(WaitStatus::Signaled(pid, Signal::SIGINT, false)));

Trait Implementations

impl Clone for WaitStatus[src][+]

impl Copy for WaitStatus[src]

impl Debug for WaitStatus[src][+]

impl Eq for WaitStatus[src]

impl Hash for WaitStatus[src][+]

impl PartialEq<WaitStatus> for WaitStatus[src][+]

impl StructuralEq for WaitStatus[src]

impl StructuralPartialEq for WaitStatus[src]

Auto Trait Implementations

impl RefUnwindSafe for WaitStatus

impl Send for WaitStatus

impl Sync for WaitStatus

impl Unpin for WaitStatus

impl UnwindSafe for WaitStatus

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src][+]

impl<T> Borrow<T> for T where
    T: ?Sized
[src][+]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src][+]

impl<T> From<T> for T[src][+]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src][+]

impl<T> ToOwned for T where
    T: Clone
[src][+]

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src][+]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src][+]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.