- ベストアンサー
標準出力とリダイレクトを同時に実行
標準出力の結果をファイルに保存するにはリダイレクトを使うと思いますが、同時に標準出力にも表示したいです。 同時に、リダイレクトの「>>」のように、追記していくようにしたいです。 そのような場合、 http://blog.goo.ne.jp/minimal_room/e/26b4d965cd67ac5abfc4ca024e69501f によれば、teeコマンドを使うと良いそうなのですが、 ./a.out | tee log.txt のようにすると、標準出力されず、上手くいきませんでした。 どのようなコマンドを打ったら良いか教えて下さい。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
/a.out | tee log.txt それで大丈夫です。a.outの標準出力を、端末とlog.txtに出力します。 log.txtに追記する場合は、 tee -a log.txt です。 >のようにすると、標準出力されず、上手くいきませんでした。 何らかの勘違いですね。a.out が標準出力に出力していないとか。
その他の回答 (2)
- astronaut
- ベストアンサー率58% (303/516)
回答No.3
teeで分けたときに、fflush() するまで標準出力に出ない、という経験を、C言語覚えたての頃に経験しました。(http://www.kouno.jp/home/c_faq/c12.html#4) 外しているかもしれませんが、ご参考まで。
質問者
お礼
お礼が遅れてすみません。 アドバイスありがとうございます。 確認しましたが、fflush()は使っていないようでした。
- entree
- ベストアンサー率55% (405/735)
回答No.2
./a.out | tee -a log.txt teeはオプションを指定しなければ上書き(>)になってしまいます。 追記(>>)したいのであれば-aオプションを指定してください。
質問者
お礼
ご指摘ありがとうございます。 -aをつけないとダメなのですね。
お礼
>それで大丈夫です。 安心しました。もう一度確認してみます。