将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'