目前,我有:
$stdout.sync = true
$stderr.sync = true
orig_stdout = $stdout.clone
orig_stderr = $stderr.clone
$stdout.reopen("log.txt","w")
$stderr.reopen("log.txt","w")
#Run some processes that I want to hide from user view
$stdout.reopen(orig_stdout)
$stderr.reopen(orig_stderr)
#Display feedback on processes completing and continue with Ruby program.
end
但是,当我运行它时,Ruby 不会将 stdout 和 stderr 发送回终端。直到程序进程被杀死,它们才会被显示,然后它们会显示在终端上。
有没有办法立即将 stdout 和 stderr 交换回终端?谢谢
编辑:
在#Run 一些我想从用户视图中隐藏的进程中,我还需要在这些进程中用户输入 svn 用户名和 svn 密码。这就是程序不会输出回终端的原因。
我仍然需要能够将所有输出重定向到“log.txt”文件并再次返回,但需要实现 svn。