这是我编写的一些代码的简化版本:
class InfiniteLoop
def run
trap('SIGTERM') do
puts 'exiting'
exit
end
loop {}
end
end
如果我运行:
InfiniteLoop.new.run
我可以
ctrl+c
并获得:exiting
但是,当我这样做时:
t = Thread.new { InfiniteLoop.new.run }
sleep 1
t.terminate
我没看到:
exiting
有人可以在这里指出正确的方向吗?我想在终止线程时具有相同的行为。
最佳答案
如果没有发送SIGTERM信号(通过ctrl + c),则不执行trap块。
另请参阅内核方法:
at_exit { puts 'exiting' }
关于ruby - 线程#终止并处理SIGTERM,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13850554/