ruby at_exit退出状态

时间:2009-07-17 15:38:03

标签: ruby exit status atexit

我可以在at_exit块确定自我处理退出状态吗?

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

2 个答案:

答案 0 :(得分:17)

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

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

答案 1 :(得分:15)

使用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