我想从我的Ruby脚本中运行一个程序,但我想分别捕获程序的STDOUT和STDERR,而不是混合它们,因此在命令shell上执行2>&1
将不会为我做。
我真的不想将这些指向tempfile并将tempfile读回我的脚本。有没有办法可以直接在我的Ruby脚本中获取这两个?
答案 0 :(得分:7)
您应该使用Open3类。它提供了执行shell命令的方法,这些命令可以将stdin,stdout和stderr作为单独的IO对象返回。
http://ruby-doc.org/stdlib-1.9.3/libdoc/open3/rdoc/Open3.html#method-c-popen3