extern crate chan_signal;
extern crate libc;
extern crate tty;
use chan_signal::Signal;
use std::process::Command;
use tty::FileDesc;
use tty::TtyServer;
fn main() {
let signal = chan_signal::notify(&[Signal::WINCH]);
let stdin = FileDesc::new(libc::STDIN_FILENO, false);
let mut server = match TtyServer::new(Some(&stdin)) {
Ok(s) => s,
Err(e) => panic!("Error TTY server: {}", e),
};
println!("Got PTY {}", server.as_ref().display());
let proxy = match server.new_client(stdin, Some(signal)) {
Ok(p) => p,
Err(e) => panic!("Error TTY client: {}", e),
};
let mut cmd = Command::new("/usr/bin/setsid");
cmd.arg("-c").arg("/bin/sh");
let process = match server.spawn(cmd) {
Ok(p) => p,
Err(e) => panic!("Failed to execute process: {}", e),
};
println!("spawned {}", process.id());
proxy.wait();
println!("quit");
}