将STDOUT输出到文件并再次返回

时间:2009-09-24 08:07:51

标签: ruby

我使用此代码将STDOUT路由到文件:

STDOUT.reopen(File.open("./OUTPUT",'w+'))

现在我需要再次将STDOUT路由到终端。

我该怎么做?

3 个答案:

答案 0 :(得分:15)

<强>已更新

orig_std_out = STDOUT.clone
STDOUT.reopen(File.open('OUTPUT', 'w+'))
puts "test to file"
STDOUT.reopen(orig_std_out)
puts "test to screen"

答案 1 :(得分:2)

您需要在文件句柄1上重新打开STDOUT,这是stdout(0=stdin, 1=stdout, 2=stderr)的标准fd句柄。

我不是Ruby人,但我认为这是正确的:

STDOUT.reopen(IO.for_fd(1, "r"))

答案 2 :(得分:1)

如果在UNIX上更简单:

STDOUT.reopen 'OUTPUT'
puts 'text to file'

STDOUT.reopen '/dev/tty'
puts 'text to console'