Rubyスクリプト内からプログラムを実行したいのですが、プログラムのSTDOUTとSTDERRを混在させずに別々にキャプチャしたいので2>&1
、コマンドシェルで実行してもうまくいきません。
これらを一時ファイルに送信して、一時ファイルをスクリプトに読み戻す必要はありません。Ruby スクリプトでこれらの両方を直接取得する方法はありますか?
Rubyスクリプト内からプログラムを実行したいのですが、プログラムのSTDOUTとSTDERRを混在させずに別々にキャプチャしたいので2>&1
、コマンドシェルで実行してもうまくいきません。
これらを一時ファイルに送信して、一時ファイルをスクリプトに読み戻す必要はありません。Ruby スクリプトでこれらの両方を直接取得する方法はありますか?
Open3 クラスを使用する必要があります。stdin、stdout、および stderr を個別の IO オブジェクトとして返すことができるシェル コマンドを実行するメソッドを提供します。
http://ruby-doc.org/stdlib-1.9.3/libdoc/open3/rdoc/Open3.html#method-c-popen3