2 个不稳定版本

0.7.0 2024年6月26日
0.1.0 2022年8月19日

#437命令行界面

Download history 156/week @ 2024-04-20 216/week @ 2024-04-27 218/week @ 2024-05-04 270/week @ 2024-05-11 112/week @ 2024-05-18 153/week @ 2024-05-25 124/week @ 2024-06-01 169/week @ 2024-06-08 145/week @ 2024-06-15 373/week @ 2024-06-22 140/week @ 2024-06-29 83/week @ 2024-07-06 64/week @ 2024-07-13 103/week @ 2024-07-20 86/week @ 2024-07-27 48/week @ 2024-08-03

315 每月下载量
用于 2 crate

MIT 许可证

78KB
2K SLoC

这个 crate 提供了一个跨平台的 API,用于处理系统提供的伪终端 (pty) 接口。与这个领域中的其他 crate 不同,这个 crate 提供了一组 trait,允许在运行时选择不同的实现。这个 crate 是 wezterm 的一部分。

use portable_pty::{CommandBuilder, PtySize, native_pty_system, PtySystem};
use anyhow::Error;

// Use the native pty implementation for the system
let pty_system = native_pty_system();

// Create a new pty
let mut pair = pty_system.openpty(PtySize {
    rows: 24,
    cols: 80,
    // Not all systems support pixel_width, pixel_height,
    // but it is good practice to set it to something
    // that matches the size of the selected font.  That
    // is more complex than can be shown here in this
    // brief example though!
    pixel_width: 0,
    pixel_height: 0,
})?;

// Spawn a shell into the pty
let cmd = CommandBuilder::new("bash");
let child = pair.slave.spawn_command(cmd)?;

// Read and parse output from the pty with reader
let mut reader = pair.master.try_clone_reader()?;

// Send data to the pty by writing to the master
writeln!(pair.master, "ls -l\r\n")?;

ssh2

如果启用了 ssh 功能,这个 crate 会暴露一个 ssh::SshSession 类型,它可以包装一个已建立的 ssh 会话,并使用 PtySystem 的实现,允许您使用相同的 pty 接口与远程 ptys 一起使用。

依赖

~2.2–3.5MB
~76K SLoC