Use External Process STDIN And STDOUT Pipes In Rust
Code
#!/usr/bin/env cargo +nightly -Zscript
//! ```cargo
//! [package]
//! edition = "2021"
//! [dependencies]
//! ```
use std::io::Write;
use std::process::{Command, Stdio};
fn main() {
let mut child = Command::new("cat")
.stdin(Stdio::piped())
.stdout(Stdio::piped())
.spawn()
.expect("Failed to spawn child process");
let mut stdin = child.stdin.take().expect("Failed to open stdin");
std::thread::spawn(move || {
stdin
.write_all("Hello, world!".as_bytes())
.expect("Failed to write to stdin");
});
let output = child.wait_with_output().expect("Failed to read stdout");
dbg!(output);
}