blob: cc318c24a9eeb1c851a52afa3bd8d08534b1b5d7 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
# pty-process
This crate adds a helper method to `std::process::Command` (and optionally its
equivalent in various async frameworks) to allocate a pty to spawn the process
into. This allows for manipulation of interactive programs.
The basic functionality is provided by the `Command` trait in this crate:
```rust
use pty_process::Command as _;
let mut cmd = std::process::Command::new("nethack");
let child = cmd.spawn_pty(Some(&pty_process::Size::new(24, 80))).unwrap();
```
The `child` instance returned by the call to `spawn_pty` is a thin wrapper
around the `Child` struct associated with the `Command` module used. You can
use it identically to how you would use the normal `std::process::Child`
instance, but it also provides additional methods for interacting with the pty:
```rust
use std::io::Write as _;
child.pty().write_all(b"foo\n").unwrap();
child.resize_pty(&pty_process::Size::new(30, 100)).unwrap();
let status = child.wait().unwrap();
```
The available implementations are gated by features:
* `backend-std`: Add an implementation for `std::process::Command`. Enabled by
default.
* `backend-smol`: Add an implementation for `smol::process::Command`.
* `backend-async-std`: Add an implementation for `async_std::process::Command`.
* `backend-tokio`: Add an implementation for `tokio::process::Command`.
Any number of backends may be enabled, depending on your needs.
|