8个版本
0.1.8 | 2022年11月15日 |
---|---|
0.1.7 | 2021年10月22日 |
0.1.5 | 2020年11月15日 |
0.1.3 | 2020年4月7日 |
#450 in 异步
每月43次下载
在rucline中使用
52KB
601 行
pwner
Pwner是一个进程所有者crate,允许以便捷的方式访问子进程。
此模块创建了拥有子进程的可能性,并提供方便的读写方法,同时在释放时优雅地终止进程。
启动拥有的进程
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);
停止拥有的进程
当拥有的进程被释放时,将终止。
示例
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
优雅释放
注意:仅在*nix平台上可用。
当拥有的进程被释放时,Process
将尝试通过发送SIGINT
优雅地杀死它。如果进程仍然没有死亡,将发送SIGTERM
并再次给予机会,直到最后发送SIGKILL
。
依赖
~2–13MB
~109K SLoC