Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

193 lines (139 sloc) 5.606 kb
== Description
Adds the wait3, wait4, waitid, pause, sigsend, and getrusage methods to
the Process module.
== Synopsis
require 'proc/wait3'
pid = fork{ sleep 1; exit 2 }
p Time.now
Process.wait3
p $?
== Module Methods
Proc.pause(signals=nil)
Pauses the current process. If the process receives any of the signals
you pass as arguments it will return from the pause and continue with
the execution of your code. Otherwise, it will exit.
Note that you must leave out the 'SIG' prefix for the signal name, e.g.
use 'INT', not 'SIGINT'.
Returns the result of the pause() function, which should always be -1.
Process.sigsend(idtype, id, signal=0)
Sends a signal of type "idtype" to a process or process group "id". This
is more versatile method of sending signals to processes than Process.kill.
For a list of valid idtype values, see the "Process type constants" below.
Not supported on all platforms.
Proc.wait3(flags=0)
Delays its caller until a signal is received or one of its child processes
terminates or stops due to tracing.
The return value is a ProcStat structure and sets the $last_status global
variable. The special global $? is also set. Raises a SystemError if there
are no child processes.
Proc.wait4(pid, flags=0)
Waits for the given child process to exit. Returns a ProcStat structure.
The $last_status global variable is set. Also sets the $? special global
variable.
Proc.waitid(id_type, id_num=nil, options=nil)
Suspends the calling process until one of its children changes state,
returning immediately if a child process changed state prior to the call.
The state of a child process will change if it terminates, stops because
of a signal, becomes trapped or reaches a breakpoint.
The id_num corresponds to a process ID or process group ID, depending on
the value of +id_type+, which may be Process::P_PID, Process::P_PGID or
Process::P_ALL. If +id_type+ is Process::P_ALL, then the +id_num+ is ignored.
The options argument is used to specify which state changes are to be
waited for. It is constructed from the bitwise-OR of one or more of the
following constants:
Process::WCONTINUED
Process::WEXITED
Process::WNOHANG
Process::WNOWAIT
Process::WSTOPPED
Process::WTRAPPED (not supported on all platforms)
If Process::WNOHANG is set as an option, this method will return
immediately, whether or not a child has changed state.
Calling this method with an +id_type+ of Process::P_ALL and the options set
to 'Process::EXITED | Process::WTRAPPED' is equivalent to calling
Process.wait.
Returns a Proc::SigInfo struct and sets $?.
Not supported on all platforms.
== Constants
=== Standard
Process::WAIT3_VERSION
Returns the version of this package as a string.
=== Process type constants
==== All platforms
Process::P_ALL
All non-system process.
Process::P_PID
A standard process id.
Process::P_PGID
Any non-system process group id.
==== Not supported on all platforms
Process::P_CID
A scheduler process id.
Process::P_GID
Any non-system effective process group id.
Process::P_PROJID
A project process id. Solaris 8 or later only.
Process::P_SID
A session process id.
Process::P_TASKID
A task process id. Solaris 8 or later only.
Process::P_UID
Any non-system effective process user id.
=== The following additional constants are defined if the waitid function is
supported on your system.
Process::WCONTINUED
Return the status for any child that was stopped and has been continued.
Process::WEXITED
Wait for process(es) to exit.
Process::WNOWAIT
Keep the process in a waitable state.
Process::WSTOPPED
Wait for and return the process status of any child that has stopped upon
receipt of a signal.
Process::WTRAPPED
Wait for traced process(es) to become trapped or reach a breakpoint.
Not supported on all platforms.
=== RLIMIT constants
Process::RLIMIT_AS
A synonym for RLIMIT_VMEM
Process::RLIMIT_CORE
The maximum size of a core file, in bytes, that may be created.
Process::RLIMIT_CPU
The maximum amount of CPU time, in seconds, the process is allowed to use.
Process::RLIMIT_DATA
The maximum size of the process' heap size, in bytes.
Process::RLIMIT_FSIZE
The maximum size of a file, in bytes, that the process may create.
Process::RLIMIT_NOFILE
The maximum value that the kernel may assign to a file descriptor,
effectively limiting the number of open files for the calling process.
Process::RLIMIT_STACK
The maximum size of the process' stack in bytes.
Process::RLIMIT_VMEM
The maximum size of the process' mapped address space.
Process::RLIM_INFINITY
A infinite limit.
Process::RLIM_SAVED_CUR
Current soft limit.
Process::RLIM_SAVED_MAX
Current hard limit.
== Notes
The wait3 and wait4 methods are similar to the wait2 and waitpid2
methods, except that they return much more information via the rusage
struct.
== Known Bugs
None that I'm aware of. Please log any bugs on the Github project
page at https://github.com/djberg96/proc-wait3.
== License
Artistic 2.0
== Copyright
(C) 2003-2014 Daniel J. Berger
All Rights Reserved.
== Warranty
This package is provided "as is" and without any express or
implied warranties, including, without limitation, the implied
warranties of merchantability and fitness for a particular purpose.
== Author
Daniel J. Berger
== See also
wait3, wait4, waitid, pause, sigsend
Jump to Line
Something went wrong with that request. Please try again.