現在、私は持っています:
$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を実装しています。