Open3.capture() をつかえば、外部コマンド実行結果の stdout, stderr, 実行ステータスは得られる。 しかし コマンド実行で stdout, stderr に大量に出力される可能性がある場合、この方法ではメモリーを圧迫してしまう危険がある。 そこで、出力結果をメモリーに展開せずに、 stdout, stderr を得る方法を検討してみた。 発想としては、 system() を使う。system() の return 値で実行ステータスを判定する。 stdout, stderr はファイルにリダイレクトする。必要に応じて、ファイルの中身を参照する。 以下にコードを書いてみた。 ( ruby 1.9.3-p484) このコード例では、 system() の return 値は 常に true か falseになる。 ( リダイレクトをしないなら、 該当コマンドが無い時
![[Ruby] system() で stdout, stderr を得る。 - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/fce955b44e4b60811032f1f51676336fe689fb87/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fqiita-user-contents.imgix.net%252Fhttps%25253A%25252F%25252Fcdn.qiita.com%25252Fassets%25252Fpublic%25252Farticle-ogp-background-afbab5eb44e0b055cce1258705637a91.png%253Fixlib%253Drb-4.0.0%2526w%253D1200%2526blend64%253DaHR0cHM6Ly9xaWl0YS11c2VyLXByb2ZpbGUtaW1hZ2VzLmltZ2l4Lm5ldC9odHRwcyUzQSUyRiUyRnFpaXRhLWltYWdlLXN0b3JlLnMzLmFtYXpvbmF3cy5jb20lMkYwJTJGMTQ5NTglMkZwcm9maWxlLWltYWdlcyUyRjE0NzM2ODM1ODQ_aXhsaWI9cmItNC4wLjAmYXI9MSUzQTEmZml0PWNyb3AmbWFzaz1lbGxpcHNlJmZtPXBuZzMyJnM9ODA4YjlhYmE2MTU3YWNjM2M4MmY0ZTg5ZjAyYTA5ODI%2526blend-x%253D120%2526blend-y%253D467%2526blend-w%253D82%2526blend-h%253D82%2526blend-mode%253Dnormal%2526s%253Da465f1fe975c1f39a2997c8a747461b4%3Fixlib%3Drb-4.0.0%26w%3D1200%26fm%3Djpg%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk2MCZoPTMyNCZ0eHQ9JTVCUnVieSU1RCUyMHN5c3RlbSUyOCUyOSUyMCVFMyU4MSVBNyUyMHN0ZG91dCUyQyUyMHN0ZGVyciUyMCVFMyU4MiU5MiVFNSVCRSU5NyVFMyU4MiU4QiVFMyU4MCU4MiZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZ0eHQtY29sb3I9JTIzMUUyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTU2JnR4dC1wYWQ9MCZzPWYwYmRkYjA2MTIzOWMxNzlkNzllZWIyMGUyY2NjMDM3%26mark-x%3D120%26mark-y%3D112%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTgzOCZoPTU4JnR4dD0lNDBrYXRveSZ0eHQtY29sb3I9JTIzMUUyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTM2JnR4dC1wYWQ9MCZzPThkMjA0YWI5YjgzNjhmMWQwZjk2ZTFhOTgyODBiMDQ4%26blend-x%3D242%26blend-y%3D480%26blend-w%3D838%26blend-h%3D46%26blend-fit%3Dcrop%26blend-crop%3Dleft%252Cbottom%26blend-mode%3Dnormal%26s%3D898229a07ac129c1d24cd369f1533ed9)