#![feature(anonymous_pipe)] fn main() { #[cfg(all(not(miri), any(unix, windows)))] { use std::io::Read; use std::pipe::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,"); } } }