class

Process::Status

Inherits Reference / Object

The status of a terminated process. Returned by Process#wait.

Class methods

[](code : Int)
Source
[](signal : Signal)
Source

Instance methods

==(other : self)

Returns true if this reference is the same as other. Invokes same?.

abnormal_exit?

Returns true if the process terminated abnormally.

Equivalent to ExitReason#abnormal?

  • #exit_reason provides more insights into the specific exit reason.
  • #normal_exit? returns the inverse.
Source
description

Returns a textual description of this process status.

Process.run("true").description # => "Process exited normally"
process = Process.new("sleep", ["10"])
process.terminate
process.wait.description # => "Process received and didn't handle signal TERM (15)"

ExitReason#description provides the specific messages for non-signal exits.

Source
exit_code

Returns the exit code of the process if it exited normally (#normal_exit?).

Raises RuntimeError if the status describes an abnormal exit.

Process.run("true").exit_code                                # => 0
Process.run("exit 123", shell: true).exit_code               # => 123
Process.new("sleep", ["10"]).tap(&.terminate).wait.exit_code # RuntimeError: Abnormal exit has no exit code
Source
exit_code?

Returns the exit code of the process if it exited normally.

Returns nil if the status describes an abnormal exit.

Process.run("true").exit_code?                                # => 0
Process.run("exit 123", shell: true).exit_code?               # => 123
Process.new("sleep", ["10"]).tap(&.terminate).wait.exit_code? # => nil
Source
exit_reason

Returns a platform-independent reason why the process terminated.

Source
exit_signal

If signal_exit? is true, returns the Signal the process received and didn't handle. Will raise if signal_exit? is false.

Available only on Unix-like operating systems.

NOTE: #exit_reason is preferred over this method as a portable alternative which also works on Windows.

Source
exit_signal?

Returns the exit Signal or nil if there is none.

On Windows returns always nil.

  • #exit_reason is a portable alternative.
Source
exit_status

Platform-specific exit status code, which usually contains either the exit code or a termination signal. The other Process::Status methods extract the values from exit_status.

Source
hash(hasher)

See Object#hash(hasher)

inspect(io : IO) : Nil

Prints a textual representation of the process status to io.

The result is similar to #to_s, but prefixed by the type name, delimited by square brackets, and constants use full paths: Process::Status[0], Process::Status[1], Process::Status[Signal::HUP], Process::Status[LibC::STATUS_CONTROL_C_EXIT].

Source
normal_exit?

Returns true if the process terminated normally.

Equivalent to ExitReason::Normal

  • #exit_reason provides more insights into other exit reasons.
  • #abnormal_exit? returns the inverse.
Source
signal_exit?

Returns true if the process was terminated by a signal.

NOTE: In contrast to WIFSIGNALED in glibc, the status code 0x7E (SIGSTOP) is considered a signal.

  • #abnormal_exit? is a more portable alternative.
  • #exit_signal? provides more information about the signal.
Source
success?

Returns true if the process exited normally with an exit code of 0.

Source
system_exit_status

Returns the exit status as indicated by the operating system.

It can encode exit codes and termination signals and is platform-specific.

Source
to_s(io : IO) : Nil

Prints a textual representation of the process status to io.

A normal exit status prints the numerical value (0, 1 etc) or a named status (e.g. STATUS_CONTROL_C_EXIT on Windows). A signal exit status prints the name of the Signal member (HUP, INT, etc.).

Source
to_s

Returns a textual representation of the process status.

A normal exit status prints the numerical value (0, 1 etc) or a named status (e.g. STATUS_CONTROL_C_EXIT on Windows). A signal exit status prints the name of the Signal member (HUP, INT, etc.).

Source