В системах POSIX вы можете сделать это следующим образом:
int bak, new;
fflush(stdout);
bak = dup(1);
new = open("/dev/null", O_WRONLY);
dup2(new, 1);
close(new);
/* your code here ... */
fflush(stdout);
dup2(bak, 1);
close(bak);
То, что вы хотите, невозможно в дальнейшей общности.
Любое решение, использующее freopen
, неверно, так как не позволяет восстановить исходное stdout
. Любое решение по присваиванию stdout
является неправильным, поскольку stdout
не является lvalue (это макрос, который расширяется до выражения типа FILE *
).