我一直在sigaction
箱子中使用nix-rust
来尝试在我的程序中处理一个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仍然被处理并且程序退出。我的处理程序不会替换默认功能,而是在它之前发生。该函数必须做什么来防止中断仍导致程序退出?
答案 0 :(得分:1)
您使用cargo run
来运行程序吗?如果是这样,听起来你的程序正在处理SIGINT信号,而货物正在被杀死。由于货物没有任何特殊处理,它会被信号杀死,从而结束你的程序。