2个版本
0.1.1 | 2023年9月2日 |
---|---|
0.1.0 | 2023年9月1日 |
#933 in 异步
17KB
342 行
伪终端
《code>pseudoterminal》库是一个多功能的伪终端(PTY)实现,专为Rust设计,提供异步功能。这个库提供了一种简单高效的方式与子进程通过伪终端进行交互。无论您是构建交互式命令行应用程序、自定义终端还是自动化终端交互,`pseudoterminal
`都是您的可靠伴侣。
主要功能
- 跨平台兼容性:在Windows和基于Unix的系统上无缝运行,确保您的项目具有广泛的兼容性。
- 异步支持:通过使用Tokio等库,轻松集成异步编程范式,提高您的应用程序效率。
- 终端尺寸操作:提供获取和修改终端尺寸的方法,允许动态调整终端布局。
入门指南
安装
要将《code>pseudoterminal》库包含到您的Rust项目中,只需将其作为依赖项添加到您的《code>Cargo.toml
[dependencies]
pseudoterminal = "0.1.0"
示例
以下是一个基本示例,说明如何使用《code>pseudoterminal》库启动终端进程并与之进行交互
use pseudoterminal::CommandExt;
use std::io::{stdin, stdout, Read, Write};
use std::process::Command;
fn main() -> Result<(), Box<dyn std::error::Error>> {
// Create a new pseudoterminal
let mut cmd = Command::new("bash"); // Replace with your desired command
let mut terminal = cmd.spawn_terminal()?;
// Read from and write to the terminal
let mut input_buffer = String::new();
let mut output_buffer = [0u8; 1024];
loop {
// Read from user input or other sources
stdin().read_line(&mut input_buffer)?;
// Write input to the terminal
terminal
.termin
.as_mut()
.unwrap()
.write_all(input_buffer.as_bytes())?;
// Read output from the terminal
let bytes_read = terminal
.termout
.as_mut()
.unwrap()
.read(&mut output_buffer)?;
// Write read bytes to stdout
stdout().write_all(&output_buffer[..bytes_read])?;
stdout().flush()?;
// Clear the input buffer
input_buffer.clear();
}
}
此示例展示了如何使用《code>pseudoterminal》启动终端进程,向其发送输入并接收其输出。您可以轻松地将《code>"bash"替换为任何其他您希望执行的命令。
文档
有关完整文档,包括深入的API参考和实际使用示例,请参阅官方文档https://docs.rs/pseudoterminal。
许可证
本库遵循宽松的MIT许可证。有关更多详情,请参阅[LICENSE]文件。
依赖项
~2–44MB
~636K SLoC