0

我知道我们可以使用 Ctrl-C

rescue Exception, or 

rescue SystemExit, or 

trap(0) or 

trap("SIGTERM") or 

trap("INT"), 

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

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

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

4

1 回答 1

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

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

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

于 2013-03-11T10:15:20.073 回答