Waits for a child process to exit and returns a Process::Status
object containing information on that process. Which child it waits on depends on the value of pid:
Waits for the child whose process ID equals pid.
Waits for any child whose process group ID equals that of the calling process.
Waits for any child process (the default if no pid is given).
Waits for any child whose process group ID equals the absolute value of pid.
The flags argument may be a logical or of the flag values Process::WNOHANG (do not block if no child available) or Process::WUNTRACED (return stopped children that haven’t been reported). Not all flags are available on all platforms, but a flag value of zero will work on all platforms.
Returns nil
if there are no child processes. Not available on all platforms.
May invoke the scheduler hook process_wait.
fork { exit 99 } #=> 27429 Process::Status.wait #=> pid 27429 exit 99 $? #=> nil pid = fork { sleep 3 } #=> 27440 Time.now #=> 2008-03-08 19:56:16 +0900 Process::Status.wait(pid, Process::WNOHANG) #=> nil Time.now #=> 2008-03-08 19:56:16 +0900 Process::Status.wait(pid, 0) #=> pid 27440 exit 99 Time.now #=> 2008-03-08 19:56:19 +0900
This is an EXPERIMENTAL FEATURE.
Returns true
if the integer value of stat equals other.
Logical AND of the bits in stat with num.
fork { exit 0x37 } Process.wait sprintf('%04x', $?.to_i) #=> "3700" sprintf('%04x', $? & 0x1e00) #=> "1600"
Shift the bits in stat right num places.
fork { exit 99 } #=> 26563 Process.wait #=> 26563 $?.to_i #=> 25344 $? >> 8 #=> 99
Override the inspection method.
system("false") p $?.inspect #=> "#<Process::Status: pid 12861 exit 1>"
Returns the process ID that this status object represents.
fork { exit } #=> 26569 Process.wait #=> 26569 $?.pid #=> 26569
Returns true
if stat terminated because of an uncaught signal.
Returns the number of the signal that caused stat to terminate (or nil
if self was not terminated by an uncaught signal).
Returns true
if stat exited normally (for example using an exit()
call or finishing the program).
Returns the least significant eight bits of the return code of stat. Only available if exited?
is true
.
fork { } #=> 26572 Process.wait #=> 26572 $?.exited? #=> true $?.exitstatus #=> 0 fork { exit 99 } #=> 26573 Process.wait #=> 26573 $?.exited? #=> true $?.exitstatus #=> 99
Returns true
if stat is successful, false
if not. Returns nil
if exited?
is not true
.
Returns true
if stat generated a coredump when it terminated. Not available on all platforms.
Exchange real and effective user IDs and return the new effective user ID. Not available on all platforms.
[Process.uid, Process.euid] #=> [0, 31] Process::UID.re_exchange #=> 0 [Process.uid, Process.euid] #=> [31, 0]
Returns true
if the real and effective user IDs of a process may be exchanged on the current platform.
Returns true
if the current platform has saved user ID functionality.
Switch the effective and real user IDs of the current process. If a block is given, the user IDs will be switched back after the block is executed. Returns the new effective user ID if called without a block, and the return value of the block if one is given.
Returns the effective group ID for this process. Not available on all platforms.
Process.egid #=> 500
Exchange real and effective group IDs and return the new effective group ID. Not available on all platforms.
[Process.gid, Process.egid] #=> [0, 33] Process::GID.re_exchange #=> 0 [Process.gid, Process.egid] #=> [33, 0]
Returns true
if the real and effective group IDs of a process may be exchanged on the current platform.
Returns true
if the current platform has saved group ID functionality.
Switch the effective and real group IDs of the current process. If a block is given, the group IDs will be switched back after the block is executed. Returns the new effective group ID if called without a block, and the return value of the block if one is given.