use subprocess::{Exec, Redirection};
fn main() -> std::io::Result<()> {
let output = Exec::cmd("echo")
.arg("Hello from subprocess!")
.stdout(Redirection::Pipe)
.capture()?;
println!("Output: {}", output.stdout_str().trim());
println!("Exit status: {:?}", output.exit_status);
let output = Exec::shell("echo stdout; echo stderr >&2")
.stdout(Redirection::Pipe)
.stderr(Redirection::Merge)
.capture()?;
println!("\nMerged output: {}", output.stdout_str().trim());
let output = Exec::shell("echo out; echo err >&2")
.stdout(Redirection::Pipe)
.stderr(Redirection::Pipe)
.capture()?;
println!("\nSeparate streams:");
println!(" stdout: {}", output.stdout_str().trim());
println!(" stderr: {}", output.stderr_str().trim());
Ok(())
}