#pty #terminal #tty

ptyprocess

Unix 系统上用于处理 PTY/TTY 的库

13 个版本

0.4.1 2023 年 3 月 6 日
0.4.0 2023 年 3 月 5 日
0.3.0 2021 年 12 月 11 日
0.2.0 2021 年 10 月 7 日
0.1.9 2021 年 7 月 28 日

#338命令行界面

Download history 1651/week @ 2024-04-23 1815/week @ 2024-04-30 1989/week @ 2024-05-07 1931/week @ 2024-05-14 1672/week @ 2024-05-21 1690/week @ 2024-05-28 1849/week @ 2024-06-04 2131/week @ 2024-06-11 1783/week @ 2024-06-18 2304/week @ 2024-06-25 1669/week @ 2024-07-02 2180/week @ 2024-07-09 1640/week @ 2024-07-16 2133/week @ 2024-07-23 2284/week @ 2024-07-30 2611/week @ 2024-08-06

8,952 每月下载量
用于 22 个 Crates (4 直接)

MIT 许可证

29KB
519 代码行

ptyprocess 构建 codecov Crate docs.rs license

此库提供了一个用于 Unix PTY/TTY 的接口。

它旨在在所有主要 Unix 变体上运行。

该库作为 https://github.com/zhiburt/expectrl 的后端开发。如果您对高级操作感兴趣,您可能最好看看 zhiburt/expectrl

使用方法

use ptyprocess::PtyProcess;
use std::io::{BufRead, BufReader, Result, Write};
use std::process::Command;

fn main() -> Result<()> {
    // spawn a cat process
    let mut process = PtyProcess::spawn(Command::new("cat"))?;

    // create a communication stream
    let mut stream = process.get_raw_handle()?;

    // send a message to process
    writeln!(stream, "Hello cat")?;

    // read a line from the stream
    let mut reader = BufReader::new(stream);
    let mut buf = String::new();
    reader.read_line(&mut buf)?;

    println!("line was entered {buf:?}");

    // stop the process
    assert!(process.exit(true)?);

    Ok(())
}

依赖项

~1.5MB
~35K SLoC