Open3.capture() をつかえば、外部コマンド実行結果の stdout, stderr, 実行ステータスは得られる。 しかし コマンド実行で stdout, stderr に大量に出力される可能性がある場合、この方法ではメモリーを圧迫してしまう危険がある。 そこで、出力結果をメモリーに展開せずに、 stdout, stderr を得る方法を検討してみた。 発想としては、 system() を使う。system() の return 値で実行ステータスを判定する。 stdout, stderr はファイルにリダイレクトする。必要に応じて、ファイルの中身を参照する。 以下にコードを書いてみた。 ( ruby 1.9.3-p484) このコード例では、 system() の return 値は 常に true か falseになる。 ( リダイレクトをしないなら、 該当コマンドが無い時