使用sigaction时如何替换默认的SIGINT处理程序?

时间:2015-06-28 13:22:14

标签: unix signals rust

我一直在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仍然被处理并且程序退出。我的处理程序不会替换默认功能,而是在它之前发生。该函数必须做什么来防止中断仍导致程序退出?

1 个答案:

答案 0 :(得分:1)

您使用cargo run来运行程序吗?如果是这样,听起来你的程序正在处理SIGINT信号,而货物正在被杀死。由于货物没有任何特殊处理,它会被信号杀死,从而结束你的程序。