| use std::io::process::{Command,ProcessOutput}; |
| |
| fn main() { |
| // Initial command `rustc` |
| let mut cmd = Command::new("rustc"); |
| // append the "--version" flag to the command |
| cmd.arg("--version"); |
| |
| // The `output` method will spawn `rustc --version`, wait until the process |
| // finishes and return the output of the process |
| match cmd.output() { |
| Err(why) => fail!("couldn't spawn rustc: {}", why.desc), |
| // Destructure `ProcessOutput` |
| Ok(ProcessOutput { error: err, output: out, status: exit }) => { |
| // Check if the process succeeded, i.e. the exit code was 0 |
| if exit.success() { |
| // `out` has type `Vec<u8>`, convert it to a UTF-8 `$str` |
| let s = String::from_utf8_lossy(out.as_slice()); |
| |
| print!("rustc succeeded and stdout was:\n{}", s); |
| } else { |
| // `err` also has type `Vec<u8>` |
| let s = String::from_utf8_lossy(err.as_slice()); |
| |
| print!("rustc failed and stderr was:\n{}", s); |
| } |
| }, |
| } |
| } |