Child::kill发送SIGKILL,但是如何发送其他信号SIGTERM呢?我可能可以使用libc及其信号API,但是有更好的方法吗?
ecs*_*rse 15
该nix库在为低级 UNIX 操作(包括发送和处理信号)提供惯用的 Rust 包装方面做得很好。在这种情况下,您将创建一个nix::Pidfrom 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();
Run Code Online (Sandbox Code Playgroud)
小智 6
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()?;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
538 次 |
| 最近记录: |