Enum WaitStatus
enum WaitStatus
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(crate::unistd::Pid, i32) The process exited normally (as with
exit()or returning frommain) with the given exit code. This case matches the C macroWIFEXITED(status); the second field isWEXITSTATUS(status).-
Signaled(crate::unistd::Pid, crate::sys::signal::Signal, bool) 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 toWTERMSIG(status)andWCOREDUMP(status).-
Stopped(crate::unistd::Pid, crate::sys::signal::Signal) The process is alive, but was stopped by the given signal. This is only reported if
WaitPidFlag::WUNTRACEDwas passed. This case matches the C macroWIFSTOPPED(status); the second field isWSTOPSIG(status).-
PtraceEvent(crate::unistd::Pid, crate::sys::signal::Signal, libc::c_int) The traced process was stopped by a
PTRACE_EVENT_*event. Seenix::sys::ptraceandptrace(2) for more information. All currently-defined events useSIGTRAPas the signal; the third field is thePTRACE_EVENT_*value of the event.-
PtraceSyscall(crate::unistd::Pid) The traced process was stopped by execution of a system call, and
PTRACE_O_TRACESYSGOODis in effect. Seeptrace(2) for more information.-
Continued(crate::unistd::Pid) The process was previously stopped but has resumed execution after receiving a
SIGCONTsignal. This is only reported ifWaitPidFlag::WCONTINUEDwas passed. This case matches the C macroWIFCONTINUED(status).-
StillAlive There are currently no state changes to report in any awaited child process. This is only returned if
WaitPidFlag::WNOHANGwas used (otherwisewait()orwaitpid()would block until there was something to report).
Implementations
impl WaitStatus
fn from_raw(pid: Pid, status: i32) -> Result<WaitStatus>Convert a raw
wstatusas returned bywaitpid/waitinto aWaitStatusErrors
Returns an
Errorcorresponding toEINVALfor invalid status values.Examples
Convert a
wstatusobtained fromlibc::waitpidinto aWaitStatus:use WaitStatus; use Signal; let pid = from_raw; let status = from_raw; assert_eq!;
impl WaitStatus
fn pid(self: &Self) -> Option<Pid>Extracts the PID from the WaitStatus unless it equals StillAlive.
impl Clone for WaitStatus
fn clone(self: &Self) -> WaitStatus
impl Copy for WaitStatus
impl Debug for WaitStatus
fn fmt(self: &Self, f: &mut Formatter<'_>) -> Result
impl Eq for WaitStatus
impl Freeze for WaitStatus
impl Hash for WaitStatus
fn hash<__H: $crate::hash::Hasher>(self: &Self, state: &mut __H)
impl PartialEq for WaitStatus
fn eq(self: &Self, other: &WaitStatus) -> bool
impl RefUnwindSafe for WaitStatus
impl Send for WaitStatus
impl StructuralPartialEq for WaitStatus
impl Sync for WaitStatus
impl Unpin for WaitStatus
impl UnsafeUnpin for WaitStatus
impl UnwindSafe for WaitStatus
impl<T> Any for WaitStatus
fn type_id(self: &Self) -> TypeId
impl<T> Borrow for WaitStatus
fn borrow(self: &Self) -> &T
impl<T> BorrowMut for WaitStatus
fn borrow_mut(self: &mut Self) -> &mut T
impl<T> CloneToUninit for WaitStatus
unsafe fn clone_to_uninit(self: &Self, dest: *mut u8)
impl<T> From for WaitStatus
fn from(t: T) -> TReturns the argument unchanged.
impl<T> ToOwned for WaitStatus
fn to_owned(self: &Self) -> Tfn clone_into(self: &Self, target: &mut T)
impl<T, U> Into for WaitStatus
fn into(self: Self) -> UCalls
U::from(self).That is, this conversion is whatever the implementation of
[From]<T> for Uchooses to do.
impl<T, U> TryFrom for WaitStatus
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
impl<T, U> TryInto for WaitStatus
fn try_into(self: Self) -> Result<U, <U as TryFrom<T>>::Error>