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

tam*_*use 2 ruby

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

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

Jak*_*sey 7

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

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