1 // run-pass
2 // ignore-emscripten spawning processes is not supported
3 // ignore-sgx no processes
4 
5 use std::{env, process};
6 
child()7 fn child() {
8     print!("[stdout 0]");
9     print!("[stdout {}]", 1);
10     println!("[stdout {}]", 2);
11     println!();
12     eprint!("[stderr 0]");
13     eprint!("[stderr {}]", 1);
14     eprintln!("[stderr {}]", 2);
15     eprintln!();
16 }
17 
parent()18 fn parent() {
19     let this = env::args().next().unwrap();
20     let output = process::Command::new(this).arg("-").output().unwrap();
21     assert!(output.status.success());
22 
23     let stdout = String::from_utf8(output.stdout).unwrap();
24     let stderr = String::from_utf8(output.stderr).unwrap();
25 
26     assert_eq!(stdout, "[stdout 0][stdout 1][stdout 2]\n\n");
27     assert_eq!(stderr, "[stderr 0][stderr 1][stderr 2]\n\n");
28 }
29 
main()30 fn main() {
31     if env::args().count() == 2 { child() } else { parent() }
32 }
33