我使用此代码将STDOUT路由到文件:
STDOUT.reopen(File.open("./OUTPUT",'w+'))
现在我需要再次将STDOUT路由到终端。
我该怎么做?
答案 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'