| Crates.io | pwner |
| lib.rs | pwner |
| version | 0.1.8 |
| created_at | 2020-04-06 18:18:39.578733+00 |
| updated_at | 2022-11-15 22:24:49.765183+00 |
| description | Pwner is a Process Owner crate that allows ergonomic access to child processes |
| homepage | |
| repository | https://github.com/m-lima/pwner |
| max_upload_size | |
| id | 227021 |
| size | 76,465 |
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.
use std::process::Command;
use pwner::Spawner;
Command::new("ls").spawn_owned().expect("ls command failed to start");
use std::io::{BufRead, BufReader, Write};
use std::process::Command;
use pwner::Spawner;
let mut child = Command::new("cat").spawn_owned()?;
child.write_all(b"hello\n")?;
let mut output = String::new();
let mut reader = BufReader::new(child);
reader.read_line(&mut output)?;
assert_eq!("hello\n", output);
The owned process is terminated whenever it is dropped.
use std::process::Command;
use pwner::Spawner;
{
let child = Command::new("ls").spawn_owned().expect("ls command failed to start");
}
// child is killed when dropped out of scope
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.