ruby at_exit退出状态

我可以在at_exit块中确定自我进程退出状态吗?

at_exit do if this_process_status.success? print 'Success' else print 'Failure' end end 

虽然关于这个的文档很薄,但是! 设置为发生的最后一个exception,并且在exit()调用之后,这是一个SystemExitexception。 将这两者放在一起就可以得到:

 at_exit do if ($!.success?) print 'Success' else print 'Failure' end end 

使用来自tadman的想法

 at_exit do if $!.nil? || $!.is_a?(SystemExit) && $!.success? print 'success' else code = $!.is_a?(SystemExit) ? $!.status : 1 print "failure with code #{code}" end end 
Interesting Posts