我一直在尝试使用 nix-rust
crate 中的 sigaction
函数,以处理程序中的 SIGINT 信号并使其不做任何操作。虽然我已经能够使用以下方式处理信号:
let sig_action = signal::SigAction::new(
handle_signal,
signal::SockFlag::empty(),
signal::SigSet::empty()
);
unsafe { signal::sigaction(signal::SIGINT, &sig_action); }
看起来无论我在handle_signal
函数中做什么,当它结束时,SIGINT仍然会被处理并导致程序退出。我的处理程序没有替换默认功能,而是在其之前发生。该函数需要做什么才能防止中断仍然导致程序退出?
signal::sigaction
返回一个Result
,你正在忽略它,也许你想添加一个unwrap
调用来检查错误。 - Shepmaster