1

Windowsで次のコマンドを入力しています:

C:\> abc.exe -t"param1" >> lofile.txt 2>&1

STDOUT と STDERR の両方が出力ファイルにリダイレクトされていますが、問題があります。

最初にプログラムが開始されると、10 行の STDERR が出力され、次に約 100 行の STDOUT が出力され、さらに数行の STDERR が出力されます。コンソール (コマンド プロンプト) では、順序は正しいです。しかし、上記のコマンドを使用してファイルにリダイレクトすると、印刷の順序が正しくありません。

最初に STDOUT が出力され、次に STDERR 出力の間のどこかで出力されます。配列が正しくないのはなぜですか?

4

1 に答える 1

0

その理由は次のとおりだと思います。

STDOUT と STDERR のバッファは別です。各バッファがいっぱいになると、内容がそれぞれのファイルにコピーされます。

ログの数が少ないためにSTDERRバッファがいっぱいになることがあるため、後の段階でファイルに移動されます。これが、プログラムが数行の STDERR 出力で開始されても、STDERR ログの前に STDOUT ログがファイルに表示される理由です。

于 2013-02-11T10:23:32.997 に答える