【问题标题】:Outputting STDOUT To A File And Back Again将 STDOUT 输出到文件并再次返回
【发布时间】:2009-09-24 08:07:51
【问题描述】:

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

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

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

我该怎么做?

【问题讨论】:

    标签: ruby


    【解决方案1】:

    更新

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        【解决方案3】:

        如果在 UNIX 上更简单:

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

        【讨论】:

          猜你喜欢
          • 2014-06-21
          • 2014-11-13
          • 1970-01-01
          • 2016-06-14
          • 1970-01-01
          • 2014-04-06
          • 1970-01-01
          • 1970-01-01
          • 2013-08-07
          相关资源
          最近更新 更多