pipeline_r(*cmds, &block)
Class Public methods
::pipeline_r starts a list of commands as a pipeline with a pipe which connects stdout of the last command.
1 2 3 4 5 6 7 | Open3.pipeline_r(cmd1, cmd2, ... [, opts]) {|last_stdout, wait_threads| ... } last_stdout, wait_threads = Open3.pipeline_r(cmd1, cmd2, ... [, opts]) ... last_stdout.close |
Each cmd is a string or an array. If it is an array, the elements are passed to Process.spawn.
1 2 3 4 5 6 7 | cmd: commandline command line string which is passed to a shell [env, commandline, opts] command line string which is passed to a shell [env, cmdname, arg1, ..., opts] command name and one or more arguments (no shell) [env, [cmdname, argv0], arg1, ..., opts] command name and arguments including argv[ 0 ] (no shell) Note that env and opts are optional, as Process.spawn. |
Example:
1 2 3 4 5 6 7 8 9 10 11 12 13 | Open3.pipeline_r( "zcat /var/log/apache2/access.log.*.gz" , [{ "LANG" => "C" }, "grep" , "GET /favicon.ico" ], "logresolve" ) {|o, ts| o.each_line {|line| ... } } Open3.pipeline_r( "yes" , "head -10" ) {|o, ts| p o.read #=> "y\ny\ny\ny\ny\ny\ny\ny\ny\ny\n" p ts[ 0 ].value #=> #<Process::Status: pid 24910 SIGPIPE (signal 13)> p ts[ 1 ].value #=> #<Process::Status: pid 24913 exit 0> } |
Please login to continue.