• ベストアンサー

標準出力とリダイレクトを同時に実行

標準出力の結果をファイルに保存するにはリダイレクトを使うと思いますが、同時に標準出力にも表示したいです。 同時に、リダイレクトの「>>」のように、追記していくようにしたいです。 そのような場合、 http://blog.goo.ne.jp/minimal_room/e/26b4d965cd67ac5abfc4ca024e69501f によれば、teeコマンドを使うと良いそうなのですが、 ./a.out | tee log.txt のようにすると、標準出力されず、上手くいきませんでした。 どのようなコマンドを打ったら良いか教えて下さい。

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4900/10359)
回答No.1

/a.out | tee log.txt それで大丈夫です。a.outの標準出力を、端末とlog.txtに出力します。 log.txtに追記する場合は、 tee -a log.txt です。 >のようにすると、標準出力されず、上手くいきませんでした。 何らかの勘違いですね。a.out が標準出力に出力していないとか。

g47040
質問者

お礼

>それで大丈夫です。 安心しました。もう一度確認してみます。

その他の回答 (2)

  • astronaut
  • ベストアンサー率58% (303/516)
回答No.3

teeで分けたときに、fflush() するまで標準出力に出ない、という経験を、C言語覚えたての頃に経験しました。(http://www.kouno.jp/home/c_faq/c12.html#4) 外しているかもしれませんが、ご参考まで。

g47040
質問者

お礼

お礼が遅れてすみません。 アドバイスありがとうございます。 確認しましたが、fflush()は使っていないようでした。

  • entree
  • ベストアンサー率55% (405/735)
回答No.2

./a.out | tee -a log.txt teeはオプションを指定しなければ上書き(>)になってしまいます。 追記(>>)したいのであれば-aオプションを指定してください。

g47040
質問者

お礼

ご指摘ありがとうございます。 -aをつけないとダメなのですね。

関連するQ&A

専門家に質問してみよう