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
    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/libc/…tandard-Streams

    Einmal editiert, zuletzt von Ramses13 (17. Juli 2013 um 20:17)


  • 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 ....

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!