Ruby 2.7.0 リファレンスマニュアル > ライブラリ一覧 > 組み込みライブラリ > Process::Statusクラス
クラス・モジュールの継承リスト: Process::Status < Object < Kernel < BasicObject
プロセスの終了ステータスを表すクラスです。メソッド Process.#wait2 などの返り値として使われます。
wait を使用した例
fork { exit } Process.wait case when $?.signaled? p "child #{$?.pid} was killed by signal #{$?.termsig}" if $?.coredump? # システムがこのステータスをサポートしてなければ常にfalse p "child #{$?.pid} dumped core." end when $?.stopped? # 実際には Process.wait を使用しているので、ここに来ることはない p "child #{$?.pid} was stopped by signal #{$?.stopsig}" when $?.exited? p "child #{$?.pid} exited normally. status=#{$?.exitstatus}" else p "unknown status %#x" % $?.to_i end
SIGCHLD を trap する例
trap(:SIGCHLD) {|sig| puts "interrupted by signal #{sig} at #{caller[1]}" # 複数の子プロセスの終了に対して1つの SIGCHLD しか届かない # 場合があるのでループさせる必要があります while Process.waitpid(-1, Process::WNOHANG|Process::WUNTRACED) case when $?.signaled? puts " child #{$?.pid} was killed by signal #{$?.termsig}" if $?.coredump? puts " child #{$?.pid} dumped core." end when $?.stopped? puts " child #{$?.pid} was stopped by signal #{$?.stopsig}" when $?.exited? puts " child #{$?.pid} exited normally. status=#{$?.exitstatus}" else p "unknown status %#x" % $?.to_i end end } p pid1 = fork { sleep 1; exit } p pid2 = fork { loop { sleep } } # signal を待つための sleep begin Process.kill :STOP, pid2 sleep # SIGCHLD を待つための sleep Process.kill :CONT, pid2 Process.kill :TERM, pid2 loop { sleep } # SIGCHLD を待つための sleep rescue Errno::ECHILD puts "done" end => 12964 12965 interrupted by signal 17 at -:27:in `sleep' child 12965 was stopped by signal 19 interrupted by signal 17 at -:30:in `sleep' child 12965 was killed by signal 15 interrupted by signal 17 at -:30:in `sleep' child 12964 exited normally. status=0 done
定義 | 説明 | |
---|---|---|
self & other -> Integer
|
self.to_i & other と同じです。このメソッドは後方互換性のためにあります。 |
|
self == other -> bool
|
同じステータスの場合に真を返します。 |
|
self >> num -> Integer
|
self.to_i >> num と同じです。 |
|
coredump? -> bool
|
終了時にコアダンプしていたら真を返します。 |
|
exited? -> bool
|
プロセスが exit(2) などにより正常に終了した場合に、真を返します。そうでない場合に false を返します。 |
|
exitstatus -> Integer | nil
|
exited? が真の場合プロセスが返した終了ステータスの整数を、そうでない場合は nil を返します。 |
|
inspect -> String
|
自身を人間が読みやすい形の文字列表現にして返します。 |
|
pid -> Integer
|
終了したプロセスのプロセス ID を返します。 |
|
signaled? -> bool
|
プロセスがハンドラを定義していないシグナルを受けて終了した場合に真を返します。 |
|
stopped? -> bool
|
プロセスが現在停止(終了ではない)している場合に真を返します。 Process.#waitpid に Process::WUNTRACED フラグを設定した場合にだけ真になりえます。 |
|
stopsig -> Integer | nil
|
stopped? が真の場合そのシグナルの番号を、そうでない場合は nil を返します。 |
|
success? -> bool
|
プロセスの終了状態が成功である場合に true を返します。そうでない場合に false を返します。 |
|
termsig -> Integer | nil
|
signaled? が真の場合プロセスを終了させたシグナル番号を、そうでない場合は nil を返します。 |
|
to_i -> Integer
|
C 言語での終了ステータス表現の整数を返します。 |
|
to_s -> String
|
to_i.to_s と同じです。 |
!
!=
__id__
__send__
instance_eval
instance_exec
method_missing
singleton_method_added
singleton_method_removed
singleton_method_undefined
!~
<=>
===
=~
_dump
class
clone
define_singleton_method
display
enum_for
eql?
equal?
extend
freeze
frozen?
hash
initialize
initialize_copy
instance_of?
instance_variable_defined?
instance_variable_get
instance_variable_set
instance_variables
is_a?
itself
marshal_dump
marshal_load
method
methods
nil?
object_id
pretty_inspect
pretty_print
pretty_print_cycle
pretty_print_inspect
pretty_print_instance_variables
private_methods
protected_methods
psych_to_yaml
public_method
public_methods
public_send
remove_instance_variable
respond_to?
respond_to_missing?
send
singleton_class
singleton_method
singleton_methods
taint
tainted?
tap
then
to_a
to_ary
to_hash
to_int
to_io
to_proc
to_regexp
to_str
trust
untaint
untrust
untrusted?
.new
.yaml_tag
::ARGF
::ARGV
::DATA
::ENV
::FALSE
::NIL
::RUBY_COPYRIGHT
::RUBY_DESCRIPTION
::RUBY_ENGINE
::RUBY_ENGINE_VERSION
::RUBY_PATCHLEVEL
::RUBY_PLATFORM
::RUBY_RELEASE_DATE
::RUBY_REVISION
::RUBY_VERSION
::SCRIPT_LINES__
::STDERR
::STDIN
::STDOUT
::TOPLEVEL_BINDING
::TRUE