Pregunta

¿Puedo determinar el estado de salida del proceso en el bloque mismos at_exit?

at_exit do
  if this_process_status.success?
    print 'Success'
  else
    print 'Failure'
  end
end
¿Fue útil?

Solución 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

Otros consejos

A pesar de que la documentación sobre este tema es muy delgada, $! está dispuesto a ser la última excepción que se produce, y después de una salida () llama a esto es una excepción SystemExit. Poniendo los dos juntos se obtiene lo siguiente:

at_exit do
  if ($!.success?)
    print 'Success'
  else
    print 'Failure'
  end
end
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top