標準エラーの吐き捨て
rubyスクリプト内で別の実行ファイルを呼び出し、それが吐く標準エラーをコンソール上に出したくないとき、つまり、bashなどで
make hoge.c 2 > /dev/null
とやるのと同様のことを行うには、STDERRを /dev/null 又は、nul(Windowsの場合)でreopenすればOK.
なので、標準出力を1行ずつ処理し、標準エラーを吐き捨てる時はこんな感じ。
nul_file = FileTest.readable? 'nul' ? 'nul' : '/dev/null' STDERR.reopen(nul_file, 'w') io = IO.popen("make hoge.c", 'r') while line = io.gets ... end