ExitStatus in std::process - Rust (original) (raw)
Struct ExitStatus
1.0.0 · Source
pub struct ExitStatus(/* private fields */);
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
orExitStatusError
using their implementations of Display.
§Differences from ExitCode
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.
🔬This is a nightly-only experimental API. (exit_status_error
#84908)
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!");
1.0.0 · Source
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}");
}
1.0.0 · Source
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")
}
The default value is one which indicates successful completion.
Available on Unix only.
Creates a new ExitStatus
or ExitStatusError
from the raw underlying integer status value from wait
Read more
If the process was terminated by a signal, returns that signal. Read more
If the process was terminated by a signal, says whether it dumped core.
If the process was stopped by a signal, returns that signal. Read more
Whether the process was continued from a stopped status. Read more
Returns the underlying raw wait
status. Read more
Available on Windows only.
Creates a new ExitStatus
from the raw underlying u32
return value of a process.
Converts to this type from the input type.
Tests for self
and other
values to be equal, and is used by ==
.
Tests for !=
. The default implementation is almost always sufficient, and should not be overridden without very good reason.