gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 07:55:37 25 4
gpt4 key购买 nike

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

最佳答案

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

关于unix - 使用 sigaction 时如何替换默认的 SIGINT 处理程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31100299/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com