mpo*_*z08 2 ruby multithreading signals
这是我写的一些代码的简化版本:
class InfiniteLoop
def run
trap('SIGTERM') do
puts 'exiting'
exit
end
loop {}
end
end
Run Code Online (Sandbox Code Playgroud)
如果我跑:
InfiniteLoop.new.run
Run Code Online (Sandbox Code Playgroud)
我可以ctrl+c得到:
exiting
Run Code Online (Sandbox Code Playgroud)
但是,当我这样做时:
t = Thread.new { InfiniteLoop.new.run }
sleep 1
t.terminate
Run Code Online (Sandbox Code Playgroud)
我没有看到:
exiting
Run Code Online (Sandbox Code Playgroud)
有人能指出我在正确的方向吗?我想在终止线程时有相同的行为.
小智 5
如果您没有发送SIGTERM信号(通过ctrl + c),则不会执行陷阱块.另请参阅内核方法:
at_exit { puts 'exiting' }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3712 次 |
| 最近记录: |