I am calling a function funcB from funcA.
funcB uses several printf statements to output data.
Is there a way for me to c
(This answer is a corrected version based on this answer.)
This answer is POSIX centric. Use open to create a file descriptor for the file you want to redirect to. Then, use dup2 to STDOUT_FILENO to change stdout to write to the file instead. But, you'll want to dup the STDOUT_FILENO before you do that, so you can restore stdout with another dup2.
fflush(stdout);
int stdout_fd = dup(STDOUT_FILENO);
int redir_fd = open(redirected_filename, O_WRONLY);
dup2(redir_fd, STDOUT_FILENO);
close(redir_fd);
funcB();
fflush(stdout);
dup2(stdout_fd, STDOUT_FILENO);
close(stdout_fd);
If funcB is using std::cout, use std::cout.flush() instead of fflush(stdout).
If you want to manipulate C++ streams more directly, you can use Johnathan Wakely's answer.