11
我可以在at_exit塊中確定自己的進程退出狀態嗎?ruby at_exit退出狀態
at_exit do
if this_process_status.success?
print 'Success'
else
print 'Failure'
end
end
我可以在at_exit塊中確定自己的進程退出狀態嗎?ruby at_exit退出狀態
at_exit do
if this_process_status.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
儘管關於此的文檔非常薄,但$!被設置爲發生的最後一個異常,並且在exit()調用之後,這是一個SystemExit異常。把那兩個聚一聚這樣的:
at_exit do
if ($!.success?)
print 'Success'
else
print 'Failure'
end
end
這將是唯一的,如果出口將被調用的情況。 當然我可以測試$!是零還是SystemExit成功回答真實? 但是有可能獲得Process :: Status對象,或者它不是爲頂級進程創建的嗎? – tig 2009-07-18 12:12:23
使用你的想法我得到的答案和張貼,但我不知道哪個答案更好地標記 - 你的或我的? – tig 2009-07-20 16:52:01