freopen stdout and console

前端 未结 3 851
梦如初夏
梦如初夏 2020-12-16 03:32

Given the following function:

freopen(\"file.txt\",\"w\",stdout);

Redirects stdout into a file, how do I make it so stdout redirects back i

3条回答
  •  一整个雨季
    2020-12-16 04:03

    You should be able to use _dup to do this

    Something like this should work (or you may prefer the example listed in the _dup documentation):

    #include 
    #include 
    
    ...
    {
        int stdout_dupfd;
        FILE *temp_out;
    
        /* duplicate stdout */
        stdout_dupfd = _dup(1);
    
        temp_out = fopen("file.txt", "w");
    
        /* replace stdout with our output fd */
        _dup2(_fileno(temp_out), 1);
        /* output something... */
        printf("Woot!\n");
        /* flush output so it goes to our file */
        fflush(stdout);
        fclose(temp_out);
        /* Now restore stdout */
        _dup2(stdout_dupfd, 1);
        _close(stdout_dupfd);
    }
    

提交回复
热议问题