1. Weiterleitung zu NetzLiving.de
  2. Forum
    1. Unerledigte Themen
  3. zum neuen Forum
  • Anmelden
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

C / Linux: Umlenkung von stderr ...

    • Frage
  • NickK
  • 17. Juli 2013 um 19:50
  • Unerledigt
Hallo zusammen,

das Informatik-Forum geht in den Archivmodus, genaue Informationen kann man der entsprechenden Ankündigung entnehmen. Als Dankeschön für die Treue bekommt man von uns einen Gutscheincode (informatikforum30) womit man bei netzliving.de 30% auf das erste Jahr sparen kann. (Genaue Infos sind ebenfalls in der Ankündigung)

Vielen Dank für die Treue und das Verständnis!
  • NickK
    Punkte
    310
    Beiträge
    46
    • 17. Juli 2013 um 19:50
    • #1

    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

  • Ramses13
    Punkte
    164
    Beiträge
    31
    • 17. Juli 2013 um 20:07
    • #2

    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)

  • NickK
    Punkte
    310
    Beiträge
    46
    • 18. Juli 2013 um 11:20
    • #3
    Zitat von Ramses13


    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

    Alles anzeigen


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

  • Maximilian Rupp 27. Dezember 2024 um 00:26

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

  1. Datenschutzerklärung
  2. Impressum