Struct ptyprocess::PtyProcess [−][src]
pub struct PtyProcess { /* fields omitted */ }
Expand description
PtyProcess controls a spawned process and communication with this.
It implements std::io::Read and std::io::Write to communicate with a child.
use ptyprocess::PtyProcess; use std::io::Write; use std::process::Command; let mut process = PtyProcess::spawn(Command::new("cat")).unwrap(); process.write_all(b"Hello World").unwrap(); process.flush().unwrap();
Implementations
Spawns a child process and create a PtyProcess.
let proc = PtyProcess::spawn(Command::new("bash"));
Returns a file representation of a PTY, which can be used to communicate with it.
Safety
Be carefull changing a descriptors inner state (e.g fcntl
)
because it affects all structures which use it.
Example
use ptyprocess::PtyProcess; use std::{process::Command, io::{BufReader, LineWriter}}; let mut process = PtyProcess::spawn(Command::new("cat")).unwrap(); let pty = process.get_pty_handle().unwrap(); let mut writer = LineWriter::new(&pty); let mut reader = BufReader::new(&pty);
Get window size of a terminal.
Default size is 80x24.
Waits until a echo settings is setup.
Set the pty process’s terminate approach delay.
Status returns a status a of child process.
Kill sends a signal to a child process.
The operation is non-blocking.
Wait blocks until a child process exits.
It returns a error if the child was DEAD or not exist at the time of a call.
If you need to verify that a process is dead in non-blocking way you can use is_alive method.
Checks if a process is still exists.
It’s a non blocking operation.
Try to force a child to terminate.
This returns true if the child was terminated. and returns false if the child could not be terminated.
It makes 4 tries getting more thorough.
- SIGHUP
- SIGCONT
- SIGINT
- SIGTERM
If “force” is true
then moves onto SIGKILL.
Send text to child’s STDIN
.
To write bytes you can use a std::io::Write operations instead.
Send controll character to a child process.
You must be carefull passing a char or &str as an argument. If you pass an unexpected controll you’ll get a error. So it may be better to use ControlCode.
use ptyprocess::{PtyProcess, ControlCode}; use std::process::Command; let mut process = PtyProcess::spawn(Command::new("cat")).unwrap(); process.send_control(ControlCode::EndOfText); // sends CTRL^C process.send_control('C'); // sends CTRL^C process.send_control("^C"); // sends CTRL^C
Send EOF
indicator to a child process.
Often eof
char handled as it would be a CTRL-C.
Trait Implementations
Auto Trait Implementations
impl RefUnwindSafe for PtyProcess
impl Send for PtyProcess
impl Sync for PtyProcess
impl Unpin for PtyProcess
impl UnwindSafe for PtyProcess