Class | Grit::Process |
In: |
lib/grit/jruby.rb
lib/grit/process.rb |
Parent: | Object |
Grit::Process includes logic for executing child processes and reading/writing from their standard input, output, and error streams.
Create an run a process to completion:
>> process = Grit::Process.new(['git', '--help'])
Retrieve stdout or stderr output:
>> process.out => "usage: git [--version] [--exec-path[=GIT_EXEC_PATH]]\n ..." >> process.err => ""
Check process exit status information:
>> process.status => #<Process::Status: pid=80718,exited(0)>
Grit::Process is designed to take all input in a single string and provides all output as single strings. It is therefore not well suited to streaming large quantities of data in and out of commands.
Q: Why not use popen3 or hand-roll fork/exec code?
FakeStatus | = | Struct.new(:pid, :exitstatus, :success?, :fake?) | JRuby always raises ECHILD on pids returned from its IO.popen4 method for some reason. Return a fake Process::Status object. | |
BUFSIZE | = | (32 * 1024) | Maximum buffer size for reading |
err | [R] | All data written to the child process‘s stderr stream as a String. |
out | [R] | All data written to the child process‘s stdout stream as a String. |
runtime | [R] | Total command execution time (wall-clock time) |
status | [R] | A Process::Status object with information on how the child exited. |
Create and execute a new process.
argv - Array of [command, arg1, …] strings to use as the new
process's argv. When argv is a String, the shell is used to interpret the command.
env - The new process‘s environment variables. This is merged with
the current environment as if by ENV.merge(env).
options - Additional options:
:input => str to write str to the process's stdin. :timeout => int number of seconds before we given up. :max => total number of output bytes A subset of Process:spawn options are also supported on all platforms: :chdir => str to start the process in different working dir.
Returns a new Process instance that has already executed to completion. The out, err, and status attributes are immediately available.