C / Linux: Umlenkung von stderr ...

  • Hallo,


    ich hoffe jemand kann mir da weiterhelfen:


    Gibts in C unter Linux eine Möglichkeit, stderr zur Laufzeit auf /dev/null zu verbiegen - oder die Ausgabe drauf sonst irgendwie verschwinden zu lassen - und auch wieder zurückzustellen ?


    Grund: ich verwend eine Bibliotheksfunktion die allerhand auf stderr ausgibt und so würd ich vor dem Funktionsaufruf stderr umlenken und nach d Aufruf wieder zurückstellen...


    Geht sowas ? Wie ?


    Danke, m f G


    NickK

  • Sähe so aus, wenn du das so gemeint hast:

    Code
    1. command 2> /dev/null


    > ... Ausgabeumleitung stdout
    2> ... Selbiges stderr
    &> ... Selbiges für beide gleichzeitig


    Edit:
    Sorry, das hatte ich jetzt falsch verstanden. Du willst innerhalb eines Programms umleiten.
    In C gibt es die Variable stderr in stdio.h
    FILE * stderr;
    Die gilt es (temporär) neu zu setzen (mit einem Stream, der ins Leere geht).
    Siehe auch hier:
    http://www.gnu.org/software/li…ibc.html#Standard-Streams




  • super, DANKE, hat ganz toll funktioniert ...




    FILE *old_stderr, *new_stderr;


    new_stderr = fopen ("/dev/null", "a");


    old_stderr = stderr;
    stderr = new_stderr;


    dubioser aufruf


    stderr = old_stderr;


    und am ende natürlich fclose ....