关闭后如何重新打开STDIN?

时间:2014-03-16 20:00:15

标签: ruby pipe

我希望在我正在生成的子进程的持续时间内“静默”STDIN,以便在等待它完成之后,键入键盘的用户不会传播到父进程。 (如果不这样做,则在子进程终止后,所有击键都会在批处理中到达父进程。)

我尝试关闭$stdin,然后关注reopen

    stdin_orig = $stdin.dup
    $stdin.close
    @pid = fork do
      exec cmd
    end
    Process.wait @pid
    $stdin.reopen(stdin_orig)

但是这引发了:

in `reopen': closed stream (IOError)

如何重新开启标准?或者是否有更好的方法在子进程运行期间忽略用户输入?

0 个答案:

没有答案