enum Process::ExitReason

Overview

The reason why a process terminated.

This enum provides a platform-independent way to query any exceptions that occurred upon a process's termination, via Process::Status#exit_reason.

Defined in:

process/status.cr

Enum Members

Normal = 0

The process exited normally.

  • On Unix-like systems, this implies Process::Status#normal_exit? is true.
  • On Windows, only exit statuses less than 0x40000000 are assumed to be reserved for normal exits.
Aborted = 1

The process terminated abnormally.

  • On Unix-like systems, this corresponds to Signal::ABRT, Signal::KILL, and Signal::QUIT.
  • On Windows, this corresponds to the NTSTATUS value STATUS_FATAL_APP_EXIT.
Interrupted = 2

The process exited due to an interrupt request.

  • On Unix-like systems, this corresponds to Signal::INT.
  • On Windows, this corresponds to the Ctrl + C and Ctrl + Break signals for console applications.
Breakpoint = 3

The process reached a debugger breakpoint, but no debugger was attached.

  • On Unix-like systems, this corresponds to Signal::TRAP.
  • On Windows, this corresponds to the NTSTATUS value STATUS_BREAKPOINT.
AccessViolation = 4

The process tried to access a memory address where a read or write was not allowed.

  • On Unix-like systems, this corresponds to Signal::SEGV.
  • On Windows, this corresponds to the NTSTATUS values STATUS_ACCESS_VIOLATION and STATUS_STACK_OVERFLOW.
BadMemoryAccess = 5

The process tried to access an invalid memory address.

  • On Unix-like systems, this corresponds to Signal::BUS.
  • On Windows, this corresponds to the NTSTATUS value STATUS_DATATYPE_MISALIGNMENT.
BadInstruction = 6

The process tried to execute an invalid instruction.

  • On Unix-like systems, this corresponds to Signal::ILL.
  • On Windows, this corresponds to the NTSTATUS values STATUS_ILLEGAL_INSTRUCTION and STATUS_PRIVILEGED_INSTRUCTION.
FloatException = 7

A hardware floating-point exception occurred.

  • On Unix-like systems, this corresponds to Signal::FPE.
  • On Windows, this corresponds to the NTSTATUS values STATUS_FLOAT_DIVIDE_BY_ZERO, STATUS_FLOAT_INEXACT_RESULT, STATUS_FLOAT_INVALID_OPERATION, STATUS_FLOAT_OVERFLOW, and STATUS_FLOAT_UNDERFLOW.
Signal = 8

The process exited due to a POSIX signal.

Only applies to signals without a more specific exit reason. Unused on Windows.

Unknown = 9

The process exited in a way that cannot be represented by any other ExitReasons.

A Process::Status that maps to Unknown may map to a different value if new enum members are added to ExitReason.

TerminalDisconnected = 10

The process exited due to the user closing the terminal window or ending an ssh session.

  • On Unix-like systems, this corresponds to Signal::HUP.
  • On Windows, this corresponds to the CTRL_CLOSE_EVENT message.
SessionEnded = 11

The process exited due to the user logging off or shutting down the OS.

  • On Unix-like systems, this corresponds to Signal::TERM.
  • On Windows, this corresponds to the CTRL_LOGOFF_EVENT and CTRL_SHUTDOWN_EVENT messages.

Instance Method Summary

Instance methods inherited from struct Enum

&(other : self) : self &, +(other : Int) : self +, -(other : Int) : self -, <=>(other : self) <=>, ==(other : self)
==(other)
==
, ^(other : self) : self ^, |(other : self) : self |, ~ : self ~, clone clone, each(& : self -> ) each, hash(hasher) hash, includes?(other : self) : Bool includes?, inspect(io : IO) : Nil inspect, to_f32 : Float32 to_f32, to_f32! : Float32 to_f32!, to_f64 : Float64 to_f64, to_f64! : Float64 to_f64!, to_i : Int32 to_i, to_i128 : Int128 to_i128, to_i128! : Int128 to_i128!, to_i16 : Int16 to_i16, to_i16! : Int16 to_i16!, to_i32 : Int32 to_i32, to_i32! : Int32 to_i32!, to_i64 : Int64 to_i64, to_i64! : Int64 to_i64!, to_i8 : Int8 to_i8, to_i8! : Int8 to_i8!, to_json(json : JSON::Builder) to_json, to_s(io : IO) : Nil
to_s : String
to_s
, to_u128 : UInt128 to_u128, to_u128! : UInt128 to_u128!, to_u16 : UInt16 to_u16, to_u16! : UInt16 to_u16!, to_u32 : UInt32 to_u32, to_u32! : UInt32 to_u32!, to_u64 : UInt64 to_u64, to_u64! : UInt64 to_u64!, to_u8 : UInt8 to_u8, to_u8! : UInt8 to_u8!, to_yaml(yaml : YAML::Nodes::Builder) to_yaml, value : Int value

Constructor methods inherited from struct Enum

from_value(value : Int) : self from_value, new(ctx : YAML::ParseContext, node : YAML::Nodes::Node)
new(value : self)
new(pull : JSON::PullParser)
new
, parse(string : String) : self parse

Class methods inherited from struct Enum

each(& : self -> ) each, from_value?(value : Int) : self | Nil from_value?, names : Array(String) names, parse?(string : String) : self | Nil parse?, valid?(value : self) : Bool valid?, values : Array(self) values

Macros inherited from struct Enum

[](*values) [], flags(*values) flags

Instance methods inherited from module Comparable(Enum)

<(other : T) : Bool <, <=(other : T) <=, <=>(other : T) <=>, ==(other : T) ==, >(other : T) : Bool >, >=(other : T) >=, clamp(min, max)
clamp(range : Range)
clamp

Instance methods inherited from struct Value

==(other : JSON::Any)
==(other : YAML::Any)
==(other)
==
, dup dup

Instance methods inherited from class Object

! : Bool !, !=(other) !=, !~(other) !~, ==(other) ==, ===(other : JSON::Any)
===(other : YAML::Any)
===(other)
===
, =~(other) =~, as(type : Class) as, as?(type : Class) as?, class class, dup dup, hash(hasher)
hash
hash
, in?(collection : Object) : Bool
in?(*values : Object) : Bool
in?
, inspect(io : IO) : Nil
inspect : String
inspect
, is_a?(type : Class) : Bool is_a?, itself itself, nil? : Bool nil?, not_nil!(message)
not_nil!
not_nil!
, pretty_inspect(width = 79, newline = "\n", indent = 0) : String pretty_inspect, pretty_print(pp : PrettyPrint) : Nil pretty_print, responds_to?(name : Symbol) : Bool responds_to?, tap(&) tap, to_json(io : IO) : Nil
to_json : String
to_json
, to_pretty_json(indent : String = " ") : String
to_pretty_json(io : IO, indent : String = " ") : Nil
to_pretty_json
, to_s(io : IO) : Nil
to_s : String
to_s
, to_yaml(io : IO) : Nil
to_yaml : String
to_yaml
, try(&) try, unsafe_as(type : T.class) forall T unsafe_as

Class methods inherited from class Object

from_json(string_or_io, root : String)
from_json(string_or_io)
from_json
, from_yaml(string_or_io : String | IO) from_yaml

Macros inherited from class Object

class_getter(*names, &block) class_getter, class_getter!(*names) class_getter!, class_getter?(*names, &block) class_getter?, class_property(*names, &block) class_property, class_property!(*names) class_property!, class_property?(*names, &block) class_property?, class_setter(*names) class_setter, def_clone def_clone, def_equals(*fields) def_equals, def_equals_and_hash(*fields) def_equals_and_hash, def_hash(*fields) def_hash, delegate(*methods, to object) delegate, forward_missing_to(delegate) forward_missing_to, getter(*names, &block) getter, getter!(*names) getter!, getter?(*names, &block) getter?, property(*names, &block) property, property!(*names) property!, property?(*names, &block) property?, setter(*names) setter

Instance Method Detail

def aborted? #

[View source]
def access_violation? #

[View source]
def bad_instruction? #

[View source]
def bad_memory_access? #

[View source]
def breakpoint? #

[View source]
def float_exception? #

[View source]
def interrupted? #

[View source]
def normal? #

[View source]
def session_ended? #

[View source]
def signal? #

[View source]
def terminal_disconnected? #

[View source]
def unknown? #

[View source]