Domanda

Posso determinare stessi processi stato di uscita nel blocco at_exit?

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

Soluzione 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

Altri suggerimenti

Anche se la documentazione su questo è davvero sottile, $! è impostato per essere l'ultima eccezione che si verifica, e dopo un'uscita () chiamare questo è un'eccezione SystemExit. Mettere quei due insieme si ottiene in questo modo:

at_exit do
  if ($!.success?)
    print 'Success'
  else
    print 'Failure'
  end
end
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top