43

さまざまな Java ベンチマークを実行しており、結果をアーカイブしたいと考えています。(dacapo) ベンチマークを次のように実行します。

C:\VM\jre\bin\java  -jar C:\benchmarks\dacapo-9.12-bach.jar %arg1% > %time::=%

ベンチマークのタイプをパラメータで渡します。それが %arg1% です。

出力をテキストファイルにリダイレクトしていることがわかります。残念ながら、出力の最初と最後の行はまだコンソールに出力されており、テキスト ファイルには出力されていません。

===== DaCapo 9.12 luindex starting =====
===== DaCapo 9.12 luindex PASSED in 2000 msec =====

特に最後の行は、テキスト ファイルに含めることが重要です:)

この動作を強制するトリックはありますか?

4

2 に答える 2

80

STDOUTおよびSTDERRをリダイレクトする必要があります。

command > logfile 2>&1

STDINはファイル記述子 #0、STDOUTはファイル記述子 #1、STDERRはファイル記述子 #2 です。
「コマンド > ファイル」がSTDOUTをファイルにリダイレクトするように、任意のファイル記述子を相互にリダイレクトすることもできます。オペレーターは>&、ファイル記述子間をリダイレクトします。したがって、すべてのSTDERR出力をSTDOUT2 >& 1にリダイレクトします。

さらに、 Dawid がコメントに追加したように2>&1、Windows では空のファイルが生成されるため、リダイレクトの順序が重要であるため、命令の最後に追加するように注意してください。command 2>&1 > logfile

于 2013-03-11T19:27:59.010 に答える
8

コマンドに 2>&1 を追加します。

 C:\VM\jre\bin\java  -jar C:\benchmarks\dacapo-9.12-bach.jar %arg1% 2>&1 > %time::=% 

これにより、STDERR が STDOUT にリダイレクトされ、STDOUT がテキストファイルにリダイレクトされます。

于 2013-03-11T19:27:50.523 に答える