2

私は Windows XP で作業していますが、stdout から出力を取得してファイルに書き込む方法はあるのでしょうか。コンソールとファイルに書き込めるようにする必要がありますが、tee のようなものを使用してもうまくいきません。

私の上司は、しばらく時間がかかるアプリケーションに取り組んでおり、コンソールに書き込んでいます。最後に、標準出力を数行巻き戻し、出力をファイルに書き込みたいと考えています。彼は、画面に何かが書き込まれるたびにファイルに書き込むのは I/O が多すぎると考えています。私は完全に間違っているかもしれませんが、それが tee コマンドの仕組みではありませんか? stdout は tee にパイプされ、出力がコンソールに書き込まれ、次に指定されたファイルに書き込まれます。

これは可能ですか?stdout がファイルディスクリプタであることは知っているので、他のファイルを巻き戻せるのでできるはずだと思っていたのですが、stdout は書き込み専用ですか?Unix では、stdout がファイル dev/stdout であることを知っています。

ありがとう

4

2 に答える 2

0

これがティー(または一般的にストリームをリダイレクトする)の目的です。厳密に言えば、標準出力を「巻き戻す」ことはできません。そのため、後でデータを表示する必要がある場合は、別の場所にリダイレクトします。

私は、「ファイルやコンソールに書き込むには IO が多すぎる」という主張を疑っています。ただし、それが実際に真実であると仮定すると...そして出力をリダイレクトしたくないと仮定すると、私が見る唯一の他の選択肢は、出力する準備ができるまでメモリに保持することです。メモリのブロックを割り当てて (およびコンソールに) 書き込み、いっぱいになるとそれをフラッシュするという凝ったスキームを考え出すこともできますが、それを実行するのは大変な作業のようです。

ここで話している IO の量は?

于 2011-10-13T21:18:52.720 に答える
0

パイプを使用して stdout をファイルにリダイレクトできます。ファイルの内容は後で表示できます。

この例を見てください:リダイレクトされた入力と出力を持つ子プロセスの作成

于 2011-10-13T21:23:39.497 に答える