Crate pty [−] [src]
PTY
The pty crate provides pty::fork(). That makes a parent process fork with new pseudo-terminal (PTY).
This crate depends on followings:
libclibrary- POSIX environment
Usage
Add this to your Cargo.toml:
[dependencies]
pty = "0.2"
and this to your crate root:
extern crate pty;
pty::fork()
This function returns pty::Child. It represents the child process and its PTY.
For example, the following code spawns tty(1) command by pty::fork() and outputs the result of the command.
extern crate pty; extern crate libc; use std::ffi::CString; use std::io::Read; use std::process::{Command}; use pty::fork::*; fn main() { let fork = Fork::from_ptmx().unwrap(); if let Some(mut master) = fork.is_parent().ok() { // Read output via PTY master let mut output = String::new(); match master.read_to_string(&mut output) { Ok(_nread) => println!("child tty is: {}", output.trim()), Err(e) => panic!("read error: {}", e), } } else { // Child process just exec `tty` Command::new("tty").status().expect("could not execute tty"); } }
Modules
| fork | |
| prelude |