我希望在我正在生成的子进程的持续时间内“静默”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)
如何重新开启标准?或者是否有更好的方法在子进程运行期间忽略用户输入?