redirect socket zu stderr?

Dieses Thema im Forum "C/C++" wurde erstellt von thinking, 25.05.2006.

  1. #1 thinking, 25.05.2006
    thinking

    thinking Grünschnabel

    Dabei seit:
    02.03.2006
    Beiträge:
    4
    Zustimmungen:
    0
    hiho

    beim starten von einem prog kann ich ja einen descriptor zu einen anderen weiterleiten

    z.b.
    ./myprog 2>&1
    also stderr nach stdout

    frage:
    wie kann ich selbiges innerhalb meines programmes

    z.b.
    int main(int argc,char **argv){
    redirect(2,1);
    }

    ich bräuchte nämlich sowas um möglicherweise alles was an stderr geht in einen socket zu redirecten
    da der socket aber erst während des programm laufes geöffnet wird, würd ich eben gerne wissen wie ich das in einem C prog unterbringen kann?

    thx@ll
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. theton

    theton Bitmuncher

    Dabei seit:
    27.05.2004
    Beiträge:
    4.820
    Zustimmungen:
    0
    Ort:
    Berlin, Germany
    Mach dir besser eine printerr(char *) ins Programm, die deine Fehlernachricht mit write() auf der aktuellen Verbindung ausgibt. Benutzt du halt kein fprintf() sondern printerr() fuer die Fehlerausgabe.

    Da FILE meines Wissens auch nur ein int ist (bin ich mir jetzt nicht 100% sicher) und der Descriptor einer Verbindung auch, sollte eigentlich eine einfache Zuweisung moeglich sein. Muesste man mal probieren. Ueblicherweise leitet man ja stderr eher in eine Logdatei um, was ja mit freopen() in einer Zeile getan ist (ok, 2 Zeilen um stderr noch zu schliessen). :)
     
  4. #3 thinking, 26.05.2006
    thinking

    thinking Grünschnabel

    Dabei seit:
    02.03.2006
    Beiträge:
    4
    Zustimmungen:
    0
    hmm
    ich hab da eine interessante idee:
    (das muss ich erst mal ausprobiertn aber,)

    Code:
    int main(int argc,char **argv){
        int sever = createserver();
        int client = acceptclient(server);
        close(stderr);   // schließen von stderr, dadurch wird descriptor 2 frei
        int newstderr = dup(client);
        // da stderr aber immer noch den wert 2 hat, und dup immer die niedrigste
        // freie descriptor nummer zurückliefert, müsste das eigentlich funktionieren!
    }
    
    und ja, FILE* is lediglich ein pointer auf eine struktur die an eine int nummer geknüpft ist: have a look @ fileno();
     
  5. theton

    theton Bitmuncher

    Dabei seit:
    27.05.2004
    Beiträge:
    4.820
    Zustimmungen:
    0
    Ort:
    Berlin, Germany
    Ich wuerde fclose() zum schliessen von stderr nutzen.
     
  6. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
Thema:

redirect socket zu stderr?

Die Seite wird geladen...

redirect socket zu stderr? - Ähnliche Themen

  1. Nginx redirect für darkstat

    Nginx redirect für darkstat: Moin, zur Zeit muss ich einen Server überwachen um die quelle für traffic spitzen zu finden. Dafür scheint darkstat die richtige Wahl zu sein um...
  2. OpenVPN traffic redirect

    OpenVPN traffic redirect: Moin, ich komm hier irgendwie nicht weiter, versuche seit Stunden OpenVPN zum Laufen zu bringen. Läuft auch soweit alles glatt, server läuft...
  3. rt6_redirect: source isn't a valid nexthop

    rt6_redirect: source isn't a valid nexthop: Hallo, ich habe unter Debian6 ein kleines Problem. Eigentlich ist es nicht weiter tragisch, trotzdem wüsste ich gerne, was die Ursache ist. Ich...
  4. IPv6 Redirect Messages Assessment Tool 1.0

    IPv6 Redirect Messages Assessment Tool 1.0: rd-attack is a tool for finding vulnerabilities based on ICMPv6 Redirect messages. Weiterlesen...
  5. Debian Mirror-Redirector vorgestellt

    Debian Mirror-Redirector vorgestellt: Der Debian-Entwickler Raphael Geissert hat einen neuen Mirror-Redirector für Debian vorgestellt. Die neue Lösung unterstützt neben der Bestimmung...