Warum wird stderr eigentlich immer mit fprintf verwendet und nicht mit printf? Hier zB.:
1 | if (ctx->debug) { |
2 | fprintf(stderr, |
3 | "Message length not corresponding to the computed length (%d != %d)\n", |
4 | rsp_length, rsp_length_computed); |
5 | }
|
|
Forum: Compiler & IDEs stderr und fprintfWarum wird stderr eigentlich immer mit fprintf verwendet und nicht mit printf? Hier zB.:
>Warum wird stderr eigentlich immer mit fprintf verwendet und nicht mit >printf? Schau dir den Prototypen und die Parameterliste für den Aufruf von printf an, dann weisst du es. Fragender schrieb: > Warum wird stderr eigentlich immer mit fprintf verwendet und nicht mit > printf? printf geht hach stdout, nicht nach stderr. Guckstdu C-Standard. Anbei ein Stueckchen Code.
MfG eagle user schrieb: > das müsste sich mit dup()/dup2() austrixen lassen... dup ist eine POSIX-Funktion (gibts zB nicht unter Windows). (f)printf sind Standard-C(++)-Funktionen, die gibts auf allen Plattformen die C(++) korrekt unterstützen (auch Windows). Sollte man daher nicht durcheinander werfen; dass das so geht ist von C nicht vorgesehen. Fragender schrieb: > Warum wird stderr eigentlich immer mit fprintf verwendet und nicht mit > printf? Weil man bei printf gar nicht wählen kann, wohin die Ausgabe gehen soll. Es geht grundsätzlich immer nach stdout. Du könntest aber umgekehrt fprintf auch mit stdout benutzen, wenn du das unbedingt alles mit der selben Funktion machen willst. Dr. Sommer schrieb: > eagle user schrieb: >> das müsste sich mit dup()/dup2() austrixen lassen... > > dup ist eine POSIX-Funktion (gibts zB nicht unter Windows). Abgesehen davon geht die Ausgabe immer noch nach stdout. Das ist jetzt nur auf Systemebene mit einem anderen Stream verbunden. Auf der C-Seite bleibt ein printf(...) aber äquivalent zu einem fprintf(stdout, ...). :
Bearbeitet durch User
Rolf M. schrieb: > Weil man bei printf gar nicht wählen kann, wohin die Ausgabe gehen soll. > Es geht grundsätzlich immer nach stdout. ... das man mit freopen() umbiegen kann. Allerdings ist dieser Dateiname dann noch weniger portabel as FD 2. Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.
|
|