如何向“Child”子进程发送信号?

时间:2018-03-10 15:32:46

标签: rust

Child::kill发送SIGTERM,但如何发送libc等其他信号?我可以使用(?:及其信号API,但是有更好的方法吗?

1 个答案:

答案 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();