stderr umleiten



  • Hallo,

    ich möchte den stderr in eine eigene Datei umleiten.
    Habe schon mehrere Möglichkeiten probiert. Compilieren ging einwandfrei, Ausgabe war aber immer auf dem Bildschirm.
    Wie geh ich das an, bin mit meinem Latein am Ende.

    Danke



  • Aus der MSDN (Stichwort freopen):

    /* FREOPEN.C: This program reassigns stderr to the file
     * named FREOPEN.OUT and writes a line to that file.
     */
    
    #include <stdio.h>
    #include <stdlib.h>
    
    FILE *stream;
    
    void main( void )
    {
       /* Reassign "stderr" to "freopen.out": */
       stream = freopen( "freopen.out", "w", stderr );
    
       if( stream == NULL )
          fprintf( stdout, "error on freopen\n" );
       else
       {
          fprintf( stream, "This will go to the file 'freopen.out'\n" );
          fprintf( stdout, "successfully reassigned\n" );
          fclose( stream );
       }
       system( "type freopen.out" );
    }
    


  • Danke,

    hab es mittlerweile so gemacht:

    FILE* ausgabe = fopen("ausgabe", "w");
    
       _iob[STDERR_FILENO] = *ausgabe;
    

    gefiel mir aber nicht so gut.


Anmelden zum Antworten