我使用的库在接收INT或TERM等信号时不会正常退出。我想抓住它们并优雅地退出。是否有可能将补丁信号陷入外部模块?我的代码的信号捕获工作正常,但在模块中的代码处于活动状态时调用INT时没有任何好处。
答案 0 :(得分:0)
信号不会影响对象或模块,但会影响进程,因此无需修补第三方模块来捕获信号。只需将它们捕获到您的代码中即可。
答案 1 :(得分:0)
Monkeypatching涉及通过交换方法或在更多方法中使用干扰来修改库代码。
信号处理是在进程级别完成的,所以它不是你可以monkeypatch的东西。您可以做的是添加必需的信号处理程序并获取正确响应的代码,或执行您希望它执行的任何关闭操作。
例如:
@Override
protected void onPostExecute(Value[] variableValues) {
// Update your views here
String gas = Double.toString(variableValues[0].getValue());
mgasDetector.setText(gas);
}
您可能还会在顶层看到Signal.trap("INT") do
BustedLibrary.shutdown!
exit(0)
end
例外,这是您可以捕捉和处理的另一件事。