Enum nix::sys::wait::WaitStatus [−][src]
pub enum WaitStatus { Exited(Pid, i32), Signaled(Pid, Signal, bool), Stopped(Pid, Signal), PtraceEvent(Pid, Signal, c_int), PtraceSyscall(Pid), Continued(Pid), StillAlive, }
Expand description
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
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)
.
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)
.
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)
.
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)
.
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]
impl WaitStatus
[src]impl WaitStatus
[src]
impl WaitStatus
[src]pub fn from_raw(pid: Pid, status: i32) -> Result<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 Clone for WaitStatus
[src]fn clone(&self) -> WaitStatus
[src]
fn clone(&self) -> WaitStatus
[src]Returns a copy of the value. Read more
fn clone_from(&mut self, source: &Self)
1.0.0[src]
fn clone_from(&mut self, source: &Self)
1.0.0[src]Performs copy-assignment from source
. Read more
impl Debug for WaitStatus
[src]
impl Debug for WaitStatus
[src]impl Hash for WaitStatus
[src]
impl Hash for WaitStatus
[src]impl PartialEq<WaitStatus> for WaitStatus
[src]
impl PartialEq<WaitStatus> for WaitStatus
[src]fn eq(&self, other: &WaitStatus) -> bool
[src]
fn eq(&self, other: &WaitStatus) -> bool
[src]This method tests for self
and other
values to be equal, and is used
by ==
. Read more
fn ne(&self, other: &WaitStatus) -> bool
[src]
fn ne(&self, other: &WaitStatus) -> bool
[src]This method tests for !=
.
impl Copy for WaitStatus
[src]
impl Eq 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> BorrowMut<T> for T where
T: ?Sized,
[src]
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]pub fn borrow_mut(&mut self) -> &mut T
[src]
pub fn borrow_mut(&mut self) -> &mut T
[src]Mutably borrows from an owned value. Read more
impl<T> ToOwned for T where
T: Clone,
[src]
impl<T> ToOwned for T where
T: Clone,
[src]type Owned = T
type Owned = T
The resulting type after obtaining ownership.
pub fn to_owned(&self) -> T
[src]
pub fn to_owned(&self) -> T
[src]Creates owned data from borrowed data, usually by cloning. Read more
pub fn clone_into(&self, target: &mut T)
[src]
pub fn clone_into(&self, target: &mut T)
[src]🔬 This is a nightly-only experimental API. (toowned_clone_into
)
recently added
Uses borrowed data to replace owned data, usually by cloning. Read more