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

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

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

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

我该怎么办?

更新

 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上重新打开STDOUT,这是stdout的标准fd句柄( 0=stdin, 1=stdout, 2=stderr )。

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

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

如果在UNIX上更简单:

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