| fn main() { | |
| #[cfg(all(not(miri), any(unix, windows), not(target_os = "emscripten")))] | |
| { | |
| use std::io::{Read, pipe}; | |
| use std::{env, process}; | |
| if env::var("I_AM_THE_CHILD").is_ok() { | |
| child(); | |
| } else { | |
| parent(); | |
| } | |
| fn parent() { | |
| let me = env::current_exe().unwrap(); | |
| let (rx, tx) = pipe().unwrap(); | |
| assert!( | |
| process::Command::new(me) | |
| .env("I_AM_THE_CHILD", "1") | |
| .stdout(tx) | |
| .status() | |
| .unwrap() | |
| .success() | |
| ); | |
| let mut s = String::new(); | |
| (&rx).read_to_string(&mut s).unwrap(); | |
| drop(rx); | |
| assert_eq!(s, "Heloo,\n"); | |
| println!("Test pipe_subprocess.rs success"); | |
| } | |
| fn child() { | |
| println!("Heloo,"); | |
| } | |
| } | |
| } |