basic/
basic.rs

1use ptyprocess::PtyProcess;
2use std::io::{BufRead, BufReader, Result, Write};
3use std::process::Command;
4
5fn main() -> Result<()> {
6    // spawn a cat process
7    let mut process = PtyProcess::spawn(Command::new("cat"))?;
8
9    // create a communication stream
10    let mut stream = process.get_raw_handle()?;
11
12    // send a message to process
13    writeln!(stream, "Hello cat")?;
14
15    // read a line from the stream
16    let mut reader = BufReader::new(stream);
17    let mut buf = String::new();
18    reader.read_line(&mut buf)?;
19
20    println!("line was entered {buf:?}");
21
22    // stop the process
23    assert!(process.exit(true)?);
24
25    Ok(())
26}