【发布时间】:2009-09-24 08:07:51
【问题描述】:
我使用此代码将 STDOUT 路由到文件:
STDOUT.reopen(File.open("./OUTPUT",'w+'))
现在我需要再次将 STDOUT 路由到终端。
我该怎么做?
【问题讨论】:
标签: ruby
我使用此代码将 STDOUT 路由到文件:
STDOUT.reopen(File.open("./OUTPUT",'w+'))
现在我需要再次将 STDOUT 路由到终端。
我该怎么做?
【问题讨论】:
标签: ruby
更新
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,这是标准输出的标准 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'
【讨论】: