单击“X”后处理ruby进程终止

时间:2013-03-11 09:53:46

标签: ruby exception-handling signals

我知道我们可以使用

处理Ctrl-C
rescue Exception, or 

rescue SystemExit, or 

trap(0) or 

trap("SIGTERM") or 

trap("INT"), 

但我想处理单击“X”按钮以关闭命令提示符的中断,要求是在程序终止异常时记录一些进度,例如系统重启或点击“X”按钮,然后我可以在下次的断点继续工作,

我尝试了所有这些,没有效果。

你有什么建议吗?有可能吗?

1 个答案:

答案 0 :(得分:0)

试试这个,

begin
  10.times do |second|
    @second = second
    sleep 1
  end
ensure
  File.open("/tmp/terminated.txt", 'w') do |f| 
    f.write("Process terminated after #{@second} second(s)")
  end
end

即使进程通过Ctrl-C终止或关闭终端窗口,ensure块中的代码也将始终运行。

如果进程未终止,它也会运行。可以通过检查循环是否已完成来防止这种情况。 File.open(...) unless @second == 10