module Process

The Process module is a collection of methods used to manipulate processes.

constants

PRIO_PGRP 1 Process Group priority.
PRIO_PROCESS 0 Process priority.
PRIO_USER 2 User priority.
WNOHANG 1 Do not block if no child has exited. Not available on all platforms.
WUNTRACED 2 Return stopped children as well. Not available on all platforms.

module methods

egid
Process.egid → aFixnum
Returns the effective group id for this process.
Process.egid 500
egid=
Process.egid= aFixnumaFixnum
Sets the effective group id for this process.
euid
Process.euid → aFixnum
Returns the effective user id for this process.
Process.euid 501
euid=
Process.euid= aFixnum
Sets the effective user id for this process. Not available on all platforms.
exit!
Process.exit!( aFixnum=-1 )
Exits the process immediately. No exit handlers are run. aFixnum is returned to the underlying system as the exit status.
Process.exit!(0)
fork
Process.fork [{ block } ] → aFixnum or nil
See Kernel::fork.
getpgid
Process.getpgid( anInteger ) → anInteger
Returns the process group id for the given process id. Not available on all platforms.
Process.getpgid(Process.ppid()) 32438
getpgrp
Process.getpgrp → anInteger
Returns the process group id for this process. Not available on all platforms.
Process.getpgid(0) 32438 Process.getpgrp 32438
getpriority
Process.getpriority( aKind, anInteger ) → aFixnum
Gets the scheduling priority for specified process, process group, or user. aKind indicates the kind of entity to find: one of Process::PRIO_PGRP, Process::PRIO_USER, or Process::PRIO_PROCESS. anInteger is an id indicating the particular process, process group, or user (an id of 0 means current). Lower priorities are more favorable for scheduling. Not available on all platforms.
Process.getpriority(Process::PRIO_USER, 0) 0 Process.getpriority(Process::PRIO_PROCESS, 0) 0
gid
Process.gid → aFixnum
Returns the group id for this process.
Process.gid 500
gid=
Process.gid= aFixnumaFixnum
Sets the group id for this process.
kill
Process.kill( aSignal, [aPid]+ ) → aFixnum
Sends the given signal to the specified process id(s), or to the current process if aPid is zero. aSignal may be an integer signal number or a POSIX signal name (either with or without a SIG prefix). If aSignal is negative (or starts with a “-” sign), kills process groups instead of processes. Not all signals are available on all platforms.
trap("SIGHUP") { close_then_exit } Process.kill("SIGHUP", 0)
pid
Process.pid → aFixnum
Returns the process id of this process. Not available on all platforms.
Process.pid 1488
ppid
Process.ppid → aFixnum
Returns the process id of the parent of this process. Always returns 0 on NT. Not available on all platforms.
print "I am ", Process.pid, "\n" Process.fork { print "Dad is ", Process.ppid, "\n" }

produces:

I am 1490 Dad is 1490
setpgid
Process.setpgid( aPid, anInteger ) → 0
Sets the process group id of aPid (0 indicates this process) to anInteger. Not available on all platforms.
setpgrp
Process.setpgrp → 0
Equivalent to setpgid(0,0). Not available on all platforms.
setpriority
Process.setpriority( kind, anInteger, anIntPriority ) → 0
See Process#getpriority.
Process.setpriority(Process::PRIO_USER, 0, 19) 0 Process.setpriority(Process::PRIO_PROCESS, 0, 19) 0 Process.getpriority(Process::PRIO_USER, 0) 19 Process.getpriority(Process::PRIO_PROCESS, 0) 19
setsid
Process.setsid → aFixnum
Establishes this process as a new session and process group leader, with no controlling tty. Returns the session id. Not available on all platforms.
Process.setsid 1495
uid
Process.uid → aFixnum
Returns the user id of this process.
Process.uid 501
uid=
Process.uid= anIntegeraNumeric
Sets the (integer) user id for this process. Not available on all platforms.
wait
Process.wait → aFixnum
Waits for any child process to exit and returns the process id of that child. Raises a SystemError if there are no child processes. Not available on all platforms.
Process.fork { exit 1; } 1500 Process.wait 1500
wait2
Process.wait2 → anArray
Waits for any child process to exit and returns an array containing the process id and the exit status of that child. Raises a SystemError if there are no child processes.
Process.fork { exit 1 } 1503 Process.wait2 [1503, 256]
waitpid
Process.waitpid( aPid, anInteger=0 ) → aPid
Waits for the given child process to exit. anInteger may be a logical or of the flag value 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.
include Process pid = fork { sleep 3 } 1506 Time.now Sun Jun 09 00:20:09 CDT 2002 waitpid(pid, Process::WNOHANG) nil Time.now Sun Jun 09 00:20:09 CDT 2002 waitpid(pid, 0) 1506 Time.now Sun Jun 09 00:20:12 CDT 2002
waitpid2
Process.waitpid2( aPid, anInteger=0 ) → anArray
Waits for the given child process to exit, returning that child's process id and exit status. anInteger may be a logical or of the flag value 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.
Show this content in its own window