use subprocess::Exec;
fn main() -> std::io::Result<()> {
let status = Exec::cmd("true").join()?;
println!("true: {:?}, success={}", status, status.success());
let status = Exec::cmd("false").join()?;
println!("false: {:?}, success={}", status, status.success());
let status = Exec::shell("exit 42").join()?;
if let Some(code) = status.code() {
println!("exit 42: code={}", code);
} else if let Some(signal) = status.signal() {
println!("exit 42: killed by signal {}", signal);
} else {
println!("exit 42: undetermined status");
}
let result = Exec::shell("echo output; exit 1").capture()?;
println!(
"\nCaptured output: {}, exit success: {}",
result.stdout_str().trim(),
result.success()
);
let status = Exec::cmd("ls").arg("/nonexistent").join()?;
if status.success() {
println!("ls succeeded");
} else if let Some(code) = status.code() {
println!("ls failed with code {}", code);
} else if let Some(signal) = status.signal() {
println!("ls killed by signal {}", signal);
} else {
println!("ls: status unknown");
}
Ok(())
}