如何在 Ruby 中的流程调用中分别获取 STDOUT 和 STDERR



我想从我的 Ruby 脚本中运行一个程序,但我想分别捕获程序的 STDOUT 和 STDERR,而不是将它们混合在一起,因此在命令外壳上执行2>&1对我来说是行不通的。

我真的不希望将它们定向到临时文件并将临时文件读回我的脚本。有没有办法在我的 Ruby 脚本中直接获取这两个?

你应该使用 Open3 类。它提供了执行 shell 命令的方法,这些命令可以将 stdin、stdout 和 stderr 作为单独的 IO 对象返回。

http://ruby-doc.org/stdlib-1.9.3/libdoc/open3/rdoc/Open3.html#method-c-popen3

最新更新