プログラムAで次のようなことを行うバッチファイルが山ほどあります。
A > log.txt ; grep 'result:' log.txt > result.txt || raise_hell.sh
私がやろうとしているのは、 A を変更して、途中で大量の中間結果を出力するようにすることです。ただし、A は次のことを行うため、思ったほど簡単ではありません。
- _freopen("somefile","w",stdout) を呼び出し、次に
- 百万の場所で printf (およびその変形) を呼び出し、出力が最終的に何らかのファイルになることを期待します。
プロジェクト内のすべての printf を変更するのは現実的ではありません。また、すべてのバッチ ファイルを変更するのも現実的ではないため、出力がどこにリダイレクトされているのかよくわかりません。
理想的には、 stdout の「元の値」に到達し、そこに書き込む方法が必要です。しかし、どのように?出力が本来あるべき場所で終わる限り、freopen の呼び出しを別のものに置き換えることさえできます。
言い換えれば、printf がファイルに出力され、他の方法で標準出力に出力されるようにしたいと考えています。
この質問のバリエーションへの回答に基づいて、いくつかのことを試しました。ただし、それらはすべて何らかのファイルに書き込むことになるため、どれも機能しません。助けを歓迎します。
edit : 明確にするために、これは Windows で、Visual Studio 2010 を使用しています。