Struct std::process::ExitStatus
1.0.0 · source · [−]pub struct ExitStatus(_);
Expand description
Describes the result of a process after it has terminated.
This struct
is used to represent the exit status or other termination of a child process.
Child processes are created via the Command
struct and their exit
status is exposed through the status
method, or the wait
method
of a Child
process.
An ExitStatus
represents every possible disposition of a process. On Unix this
is the wait status. It is not simply an exit status (a value passed to exit
).
For proper error reporting of failed processes, print the value of ExitStatus
or
ExitStatusError
using their implementations of Display
.
Differences from ExitStatus
ExitCode
is intended for terminating the currently running process, via
the Termination
trait, in contrast to ExitStatus
, which represents the
termination of a child process. These APIs are separate due to platform
compatibility differences and their expected usage; it is not generally
possible to exactly reproduce an ExitStatus from a child for the current
process after the fact.
Implementations
sourceimpl ExitStatus
impl ExitStatus
sourcepub fn exit_ok(&self) -> Result<(), ExitStatusError>
pub fn exit_ok(&self) -> Result<(), ExitStatusError>
Was termination successful? Returns a Result
.
Examples
#![feature(exit_status_error)]
use std::process::Command;
let status = Command::new("ls")
.arg("/dev/nonexistent")
.status()
.expect("ls could not be executed");
println!("ls: {status}");
status.exit_ok().expect_err("/dev/nonexistent could be listed!");
Runsourcepub fn success(&self) -> bool
pub fn success(&self) -> bool
Was termination successful? Signal termination is not considered a success, and success is defined as a zero exit status.
Examples
use std::process::Command;
let status = Command::new("mkdir")
.arg("projects")
.status()
.expect("failed to execute mkdir");
if status.success() {
println!("'projects/' directory created");
} else {
println!("failed to create 'projects/' directory: {status}");
}
Runsourcepub fn code(&self) -> Option<i32>
pub fn code(&self) -> Option<i32>
Returns the exit code of the process, if any.
In Unix terms the return value is the exit status: the value passed to exit
, if the
process finished by calling exit
. Note that on Unix the exit status is truncated to 8
bits, and that values that didn’t come from a program’s call to exit
may be invented by the
runtime system (often, for example, 255, 254, 127 or 126).
On Unix, this will return None
if the process was terminated by a signal.
ExitStatusExt
is an
extension trait for extracting any such signal, and other details, from the ExitStatus
.
Examples
use std::process::Command;
let status = Command::new("mkdir")
.arg("projects")
.status()
.expect("failed to execute mkdir");
match status.code() {
Some(code) => println!("Exited with status code: {code}"),
None => println!("Process terminated by signal")
}
RunTrait Implementations
sourceimpl Clone for ExitStatus
impl Clone for ExitStatus
sourcefn clone(&self) -> ExitStatus
fn clone(&self) -> ExitStatus
Returns a copy of the value. Read more
sourcefn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read more
sourceimpl Debug for ExitStatus
impl Debug for ExitStatus
sourceimpl Display for ExitStatus
impl Display for ExitStatus
sourceimpl ExitStatusExt for ExitStatus
This is supported on Unix only.
impl ExitStatusExt for ExitStatus
sourcefn from_raw(raw: i32) -> Self
fn from_raw(raw: i32) -> Self
Creates a new ExitStatus
or ExitStatusError
from the raw underlying integer status
value from wait
Read more
sourcefn signal(&self) -> Option<i32>
fn signal(&self) -> Option<i32>
If the process was terminated by a signal, returns that signal. Read more
sourcefn core_dumped(&self) -> bool
fn core_dumped(&self) -> bool
If the process was terminated by a signal, says whether it dumped core.
sourcefn stopped_signal(&self) -> Option<i32>
fn stopped_signal(&self) -> Option<i32>
If the process was stopped by a signal, returns that signal. Read more
1.12.0 · sourceimpl ExitStatusExt for ExitStatus
This is supported on Windows only.
impl ExitStatusExt for ExitStatus
sourceimpl Into<ExitStatus> for ExitStatusError
impl Into<ExitStatus> for ExitStatusError
sourcefn into(self) -> ExitStatus
fn into(self) -> ExitStatus
Converts this type into the (usually inferred) input type.
sourceimpl PartialEq<ExitStatus> for ExitStatus
impl PartialEq<ExitStatus> for ExitStatus
sourcefn eq(&self, other: &ExitStatus) -> bool
fn eq(&self, other: &ExitStatus) -> bool
This method tests for self
and other
values to be equal, and is used
by ==
. Read more
sourcefn ne(&self, other: &ExitStatus) -> bool
fn ne(&self, other: &ExitStatus) -> bool
This method tests for !=
.
impl Copy for ExitStatus
impl Eq for ExitStatus
impl StructuralEq for ExitStatus
impl StructuralPartialEq for ExitStatus
Auto Trait Implementations
impl RefUnwindSafe for ExitStatus
impl Send for ExitStatus
impl Sync for ExitStatus
impl Unpin for ExitStatus
impl UnwindSafe for ExitStatus
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<T> ToOwned for T where
T: Clone,
impl<T> ToOwned for T where
T: Clone,
type Owned = T
type Owned = T
The resulting type after obtaining ownership.
sourcefn clone_into(&self, target: &mut T)
fn clone_into(&self, target: &mut T)
Uses borrowed data to replace owned data, usually by cloning. Read more