Do you know that? 28% of freelancers who spent less than two hours per week prospecting earned $70 or more per hour. next

How can you restore a redirected standard stream?

The preceding example showed how you can redirect a standard stream from within your program. But what
if later in your program you wanted to restore the standard stream to its original state? By using the standard
C library functions named dup() and fdopen(), you can restore a standard stream such as stdout to its
original state.

The  dup() function duplicates a file handle. You can use the  dup() function to save the file handle
corresponding to the  stdout standard stream. The  fdopen() function opens a stream that has been
duplicated with the dup() function. Thus, as shown in the following example, you can redirect standard
streams and restore them:

#include <stdio.h>
void main(void);

void main(void)
{
     int orig_stdout;
     /* Duplicate the stdout file handle and store it in orig_stdout. */
     orig_stdout = dup(fileno(stdout));
     /* This text appears on-screen. */
     printf("Writing to original stdout...\n");
     /* Reopen stdout and redirect it to the "redir.txt" file. */
     freopen("redir.txt", "w", stdout);
     /* This text appears in the "redir.txt" file. */
     printf("Writing to redirected stdout...\n");
     /* Close the redirected stdout. */
     fclose(stdout);
     /* Restore the original stdout and print to the screen again. */
     fdopen(orig_stdout, "w");
     printf("I'm back writing to the original stdout.\n");
}