pseudoterminal

The pseudoterminal crate is a versatile pseudoterminal (PTY) implementation designed for Rust, offering asynchronous capabilities. This library provides a straightforward and efficient means to interact with child processes via pseudoterminals. Whether you're building interactive command-line applications, custom terminals, or automating terminal interactions, pseudoterminal is your reliable companion.

Key Features

Getting Started

Installation

To include the pseudoterminal crate in your Rust project, simply add it as a dependency in your Cargo.toml:

toml [dependencies] pseudoterminal = "0.1.0"

Example

Here's a basic example illustrating how to use the pseudoterminal crate to spawn a terminal process and engage with it interactively:

```rust use pseudoterminal::CommandExt; use std::io::{stdin, stdout, Read, Write}; use std::process::Command;

fn main() -> Result<(), Box> { // 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();
}

} ```

This example showcases how to spawn a terminal process using pseudoterminal, transmit input to it, and receive its output. You can effortlessly swap "bash" with any other command you wish to execute.

Documentation

For comprehensive documentation, including an in-depth API reference and practical usage examples, please consult the official documentation at https://docs.rs/pseudoterminal.

License

This crate is distributed under the permissive MIT License. For more details, please review the [LICENSE] file.