Child::kill
发送SIGTERM
,但如何发送libc
等其他信号?我可以使用(?:
及其信号API,但是有更好的方法吗?
答案 0 :(得分:2)
nix
库在围绕底层UNIX操作(包括发送和处理信号)提供惯用的防锈包装方面做得很好。在这种情况下,您可以从child_process.id()
创建一个nix::Pid
,然后将其传递给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();