[−][src]Crate portable_pty
This crate provides a cross platform API for working with the psuedo terminal (pty) interfaces provided by the system. Unlike other crates in this space, this crate provides a set of traits that allow selecting from different implementations at runtime. This crate is part of 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
If the ssh
feature is enabled, this crate exposes an
ssh::SshSession
type that can wrap an established ssh
session with an implementation of PtySystem
, allowing
you to use the same pty interface with remote ptys.
Re-exports
pub use cmdbuilder::CommandBuilder; |
Modules
cmdbuilder | |
serial | This module implements a serial port based tty.
This is a bit different from the other implementations in that
we cannot explicitly spawn a process into the serial connection,
so we can only use a |
unix | Working with pseudo-terminals |
Structs
ExitStatus | Represents the exit status of a child process. This is rather anemic in the current version of this crate, holding only an indicator of success or failure. |
PtyPair | |
PtySize | Represents the size of the visible display area in the pty |
Traits
Child | Represents a child process spawned into the pty. This handle can be used to wait for or terminate that child process. |
MasterPty | Represents the master/control end of the pty |
PtySystem | The |
SlavePty | Represents the slave side of a pty. Can be used to spawn processes into the pty. |
Functions
native_pty_system |
Type Definitions
NativePtySystem |