open: Capture stdout of child processes
This commit is contained in:
parent
3ef5627a0f
commit
924224c7fa
1 changed files with 14 additions and 8 deletions
|
@ -18,18 +18,24 @@ struct AuthResult {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn run_bin(bin: Binary) -> Result<String, String> {
|
fn run_bin(bin: Binary) -> Result<String, String> {
|
||||||
|
use std::{
|
||||||
|
io::Read,
|
||||||
|
process::{Command, Stdio},
|
||||||
|
};
|
||||||
|
|
||||||
let mut ret = Err("".to_string());
|
let mut ret = Err("".to_string());
|
||||||
let mut iter = bin.iter();
|
let mut iter = bin.iter();
|
||||||
let mut cmd = std::process::Command::new(iter.next().unwrap());
|
let mut cmd = Command::new(iter.next().unwrap());
|
||||||
cmd.args(iter);
|
cmd.args(iter);
|
||||||
|
|
||||||
let stdout = cmd.output().unwrap().stdout;
|
let mut child = cmd.stdout(Stdio::piped()).spawn().unwrap();
|
||||||
let str = std::str::from_utf8(stdout.as_slice())
|
let mut success = child.wait().unwrap().success();
|
||||||
.unwrap()
|
|
||||||
.trim()
|
let mut s = String::from("");
|
||||||
.to_string();
|
child.stdout.unwrap().read_to_string(&mut s).unwrap();
|
||||||
let st = cmd.status().unwrap();
|
s = String::from(s.trim());
|
||||||
ret = if st.success() { Ok(str) } else { Err(str) };
|
|
||||||
|
ret = if success { Ok(s) } else { Err(s) };
|
||||||
ret
|
ret
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue