我想确保在ruby程序结束时运行一段代码。我使用了以下方法,但在某些情况下它们不起作用。

def a_method
   # do some work
ensure
   # code that must be run when method ends and if program exits when it still in this method.
end

def a_method
   at_exit{
      # run code that needs to be run when process exists
   }
   # do some work
ensure
   # do code that needs to be run when method ends
end

当进程被除“cc>”以外的信号终止时,这两种方法工作得非常好,尽管我没有尝试所有的信号。
那么有没有办法确保即使进程被这个信号终止,代码也能运行呢?

最佳答案

信号9在设计上是不可捕捉、不可忽略的杀伤您的at_exit将不会运行,因为操作系统只会终止接收此信号的任何进程,而不会给它任何做额外工作的机会。

关于ruby - 确保程序退出时代码块运行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34657277/

10-09 20:05
查看更多