Ruby で外部プログラムの標準エラー出力を得る方法
Ruby で外部プログラムを実行するにはバッククォート文字列がもっとも簡単だ。
s = `command`
こうすると command
コマンドを実行し、標準出力の結果を返り値で受け取ることができる。
だが、標準エラーへの出力を得るには別の手段を用いなくてはいけない。
open3
もちろん、あくまでバッククォート文字列にこだわって、標準エラーを標準出力にリダイレクトする、なんてのもあるわけだが、
s = `command 2>&1`
これだと返り値には標準出力と標準エラーがまじってしまうので、添付ライブラリの open3
を使うのがいいだろう。
require 'open3'
Open3.popen3("command") do |stdin, stdout, stderr|
...
end
Open3.popen3
で外部プログラムを実行し、そのプロセスの標準入力・標準出力・ 標準エラー出力を IO
オブジェクトとして取得できる。