Ruby 2.2.0 リファレンスマニュアル > ライブラリ一覧 > open3ライブラリ > Open3モジュール

module Open3

クラスの継承リスト: Open3

要約

プログラムを実行し、そのプロセスの標準入力・標準出力・標準エラー出力にパイプをつなぎます。

使用例

nroff を実行してその標準入力に man ページを送り込み処理させる。 nroff プロセスの標準出力から処理結果を受け取る。

require "open3"

stdin, stdout, stderr = *Open3.popen3('nroff -man')
# こちらから書く
Thread.fork {
  File.foreach('/usr/man/man1/ruby.1') do |line|
    stdin.print line
  end
  stdin.close    # または close_write
}
# こちらから読む
stdout.each do |line|
  print line
end

モジュール関数

定義 説明
capture2(*cmd) -> [String, Process::Status]

cmdで指定されたコマンドを実行し、そのプロセスの標準出力とプロセスの終了ステータスを表すオブジェクトを返します。

capture2e(*cmd) -> [String, Process::Status]

cmdで指定されたコマンドを実行し、そのプロセスの標準出力と標準エラーを1 つの文字列にしたものとプロセスの終了ステータスを表すオブジェクトを返します。

capture3(*cmd) -> [String, String, Process::Status]

cmdで指定されたコマンドを実行し、そのプロセスの標準出力と標準エラー、プロセスの終了ステータスを表すオブジェクトを返します。

pipeline(*cmds) -> [Process::Status]

指定したコマンドのリストをパイプで繋いで順番に実行します。

pipeline_r(*cmds) -> [IO, [Thread]]
pipeline_r(*cmds) {|last_stdout, wait_thrs| ... } -> ()

指定したコマンドのリストをパイプで繋いで順番に実行します。最後のコマンドの標準出力を受けとる事ができます。

pipeline_rw(*cmds) -> [IO, IO, [Thread]]
pipeline_rw(*cmds) {|first_stdin, last_stdout, wait_thrs| ... } -> ()

指定したコマンドのリストをパイプで繋いで順番に実行します。最初のコマンドの標準入力に書き込む事も最後のコマンドの標準出力を受けとる事もできます。

pipeline_start(*cmds) -> [Thread]
pipeline_start(*cmds) {|wait_thrs| ... } -> ()

指定したコマンドのリストをパイプで繋いで順番に実行します。

pipeline_w(*cmds) -> [IO, [Thread]]
pipeline_w(*cmds) {|first_stdin, wait_thrs| ... } -> ()

指定したコマンドのリストをパイプで繋いで順番に実行します。最初のコマンドの標準入力に書き込む事ができます。

popen2(*cmd) -> [IO, IO, Thread]
popen2(*cmd) {|stdin, stdout, wait_thr| ... } -> ()

cmdで指定されたコマンドを実行し、そのプロセスの標準入力・標準出力にパイプをつなぎます。Open3.popen3に似ていますが、標準エラーを扱いません。

popen2e(*cmd) -> [IO, IO, Thread]
popen2e(*cmd) {|stdin, stdout_and_stderr, wait_thr| ... } -> ()

cmdで指定されたコマンドを実行し、そのプロセスの標準入力・標準出力と標準エラーにパイプをつなぎます。Open3.popen3に似ていますが、標準出力と標準エラーが1つの変数で扱われます。

popen3(*cmd) -> [IO, IO, IO, Thread]
popen3(*cmd) {|stdin, stdout, stderr, wait_thr| ... } -> ()

外部プログラム cmd を実行し、そのプロセスの標準入力、標準出力、標準エラー出力に接続されたパイプと実行したプロセスを待つためのスレッドを 4 要素の配列で返します。