以下代码将标准输出重定向到文件fname,然后再重定向回原始的标准输出。对我来说它工作得很好。但我无法理解它是如何工作的。如果有人能帮助我理解,我会非常感激。
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");