nix
库在为低级 UNIX 操作(包括发送和处理信号)提供惯用的 Rust 包装器方面做得很好。在这种情况下,您将从 nix::Pid
创建一个
child_process.id()
,然后将其传递给 kill
,如下所示:
use nix::unistd::Pid;
use nix::sys::signal::{self, Signal};
// Spawn child process.
let mut child = std::process::Command::new();
/* build rest of command */
child.spawn().unwrap();
// Send SIGTERM to child process.
signal::kill(Pid::from_raw(child.id()), Signal::SIGTERM).unwrap();
kill
kill
命令有一堆选项可以向进程发送不同的信号。
您可以使用child
获取.id()
的进程ID。
会是这样的
let kill = Command::new("kill")
// TODO: replace `TERM` to signal you want.
.args(["-s", "TERM", &child.id().to_string()])
.spawn()?;
kill.wait()?;