我想确保在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/