Question

Puis-je déterminer l'état de sortie du processus mêmes dans le bloc de at_exit?

at_exit do
  if this_process_status.success?
    print 'Success'
  else
    print 'Failure'
  end
end
Était-ce utile?

La solution 2

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

Autres conseils

Bien que la documentation à ce sujet est vraiment mince, $! est réglé pour être la dernière exception qui se produit, et, après une sortie () appelle ceci est une exception de SystemExit. Mettre les deux ensemble vous obtenez ceci:

at_exit do
  if ($!.success?)
    print 'Success'
  else
    print 'Failure'
  end
end
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top