如何在Ruby中的进程调用中单独获取STDOUT和STDERR?

时间:2012-11-30 05:23:57

标签: ruby

我想从我的Ruby脚本中运行一个程序,但我想分别捕获程序的STDOUT和STDERR,而不是混合它们,因此在命令shell上执行2>&1将不会为我做。

我真的不想将这些指向tempfile并将tempfile读回我的脚本。有没有办法可以直接在我的Ruby脚本中获取这两个?

1 个答案:

答案 0 :(得分:7)

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

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