以下のコードはstdoutをファイルfname &にリダイレクトし、元のstdoutにリダイレクトします。それは私のためにうまく動作します。 しかし、実際にどのように動作するのか理解できません。もし誰かが私の理解を助けることができれば、私はそれを気付かせるでしょう。この標準出力リダイレクトの仕組みは?
printf("\n This is console");
fflush(stdout);
fgetpos(stdout, &pos);
fd = dup(fileno(stdout));
freopen(fname, "a+", stdout);
printf("inside file op");
fflush(stdout);
dup2(fd,fileno(stdout));
close(fd);
clearerr(stdout);
fsetpos(stdout, &pos);
printf("\nBack to Console");
はい、それをコピーしてください。心に留めておきます。ありがとう:) – vindyz
上記の神々、なぜ誰かがしたいのですか? (stdoutへの書き込みを主張しているソースのないライブラリのための、欲求不満の回避策の他にも)。 –
デバッグの目的で別のログメッセージを別のファイルにリダイレクトしたい場合は、そのために非常に便利です。 – vindyz