[英]Gracefully exiting from thread in Ruby
我正在嘗試Mongrel,並使用以下代碼:
require 'rubygems'
require 'mongrel'
class SimpleHandler < Mongrel::HttpHandler
def process(request, response)
response.start(200) do |head, out|
head["Content-Type"] = "text/plain"
out.write("Hello World!\n")
end
end
end
h = Mongrel::HttpServer.new("0.0.0.0", "3000")
h.register("/test", SimpleHandler.new)
puts "Press Control-C to exit"
h.run.join
trap("INT") do
puts "Exiting..."
end
基本上,這只是打印出“ Hello World!” 當我轉到localhost:3000 / test時。 它工作正常,我可以使用Control-C關閉該程序。 但是,當我按Control-C時,將輸出:
my_web_server.rb:17:in `join': Interrupt
from my_web_server.rb:17
因此,我嘗試將trap("INT")
語句放在末尾,但是沒有被調用。 解?
謝謝。
如果您要做的就是在沒有堆棧跟蹤的情況下退出,則無需捕獲INT。 控件c導致“中斷”異常。 因此,要讓您的程序在control-C上退出而沒有難看的堆棧跟蹤,請捕獲該異常:
begin
... # do stuff
rescue Interrupt
puts "Exiting..."
end
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.