]> git.lizzy.rs Git - rust.git/blob - tests/ui/process/issue-13304.rs
Rollup merge of #106664 - chenyukang:yukang/fix-106597-remove-lseek, r=cuviper
[rust.git] / tests / ui / process / issue-13304.rs
1 // run-pass
2 #![allow(unused_mut)]
3 // ignore-emscripten no processes
4 // ignore-sgx no processes
5
6 use std::env;
7 use std::io::prelude::*;
8 use std::io;
9 use std::process::{Command, Stdio};
10 use std::str;
11
12 fn main() {
13     let args: Vec<String> = env::args().collect();
14     if args.len() > 1 && args[1] == "child" {
15         child();
16     } else {
17         parent();
18     }
19 }
20
21 fn parent() {
22     let args: Vec<String> = env::args().collect();
23     let mut p = Command::new(&args[0]).arg("child")
24                         .stdout(Stdio::piped())
25                         .stdin(Stdio::piped())
26                         .spawn().unwrap();
27     p.stdin.as_mut().unwrap().write_all(b"test1\ntest2\ntest3").unwrap();
28     let out = p.wait_with_output().unwrap();
29     assert!(out.status.success());
30     let s = str::from_utf8(&out.stdout).unwrap();
31     assert_eq!(s, "test1\ntest2\ntest3\n");
32 }
33
34 fn child() {
35     let mut stdin = io::stdin();
36     for line in stdin.lock().lines() {
37         println!("{}", line.unwrap());
38     }
39 }