pwner 
Pwner is a Process Owner crate that allows ergonomic access to child processes.
This module creates the possibility of owning a child and having convenient methods to read and write, while also killing the process gracefully upon dropping.
Spawning an owned process
use Command;
use Spawner;
new.spawn_owned.expect;
Reading and writing
use ;
use Command;
use Spawner;
let mut child = new.spawn_owned?;
child.write_all?;
let mut output = Stringnew;
let mut reader = new;
reader.read_line?;
assert_eq!;
Stopping an owned process
The owned process is terminated whenever it is dropped.
Example
use Command;
use Spawner;
// child is killed when dropped out of scope
Graceful dropping
Note: Only available on *nix platforms.
When the owned process gets dropped, Process will try to
kill it gracefully by sending a SIGINT. If the process still doesn't die,
a SIGTERM is sent and another chance is given, until finally a SIGKILL is sent.