freopen()
を使用する理由 ? C89 仕様の <stdio.h>
に関するセクションの文末脚注の 1 つに答えがあります。 :
freopen
よく誤用されます。 stdin = freopen("newin", "r", stdin);
.これは fclose(stdin); stdin = fopen("newin", "r");
より移植性がありません .どちらの式も stdin
への代入を試みます 、割り当て可能であることが保証されていません。
freopen
の正しい使い方 freopen("newin", "r", stdin);
の割り当てを省略します。
freopen()
のようなものを探していると思います
これは、Tim Post の方法の修正版です。 /dev/stdout の代わりに /dev/tty を使用しました。 stdout (/proc/self/fd/1 へのリンク) で動作しない理由がわかりません:
freopen("log.txt","w",stdout);
...
...
freopen("/dev/tty","w",stdout);
/dev/tty を使用すると、アプリが起動された端末に出力がリダイレクトされます。
この情報がお役に立てば幸いです。