Archiv verlassen und diese Seite im Standarddesign anzeigen : stderr und stdout
"Fehlrausgaben sind auf stderr zu schreiben" ?
ob man jetzt fprintf(stdout oder stderr, schreibt es landet ja beides auf der shell??
Hi,
wenn Du alles auf die Standardausgabe gibst, dann kann man zwischen Fehlermeldungen und normalen Ausgaben nicht mehr unterscheiden, wodurch z.B. folgender Befehl nicht mehr die gewünschte Wirkung hat:
./dein_program 2> fehler.txt
Gruß micha
die standardausgabe ist die normale schwarze shell richtig?
und wenn ich es mit stderr ausprinte landets auch auf der shell-weder mit formatierung noch sonst einem unterschied
also woran soll man einen unterschied sehen??
Was für ne schwarze Shell ?
Standard- und Standardfehlerausgabe werden von der Shell zunächst mal zusammen ausgegeben. Man hat aber die Möglichkeit beide zu trennen. Das obige Beispiel leitet alle Fehlermeldungen in die Datei fehler.txt. Wenn Du jetzt die ganzen Fehlermeldungen auf stdout ausgibst, wird da nachher nichts drinstehn ...
siehe auch: http://www.linuxfibel.de/eaumleitung.htm
Gruß micha
anda_skoa
25-10-2002, 09:15
Außerdem ist stderr meistens ungepuffert.
Es wird also auch Text rausgechrieben, der nicht mit newline endet, ohne dass man extra flushed.
Ciao,
_
peschmae
25-10-2002, 11:18
@mips
Was für ne schwarze Shell ? meine ist aber weiss :D
MfG Peschmä
also wenn ich mein programm so ausführe programm > fehler.txt
dann wird genau alles was mit stdout ausgegeben wird in fehler.txt geschrieben
und alles was mit stderr ausgegeb wird auf die shell
also genau umgekehrt als von micha beschrieben
anda_skoa
25-10-2002, 12:51
Original geschrieben von mips
also wenn ich mein programm so ausführe programm > fehler.txt
dann wird genau alles was mit stdout ausgegeben wird in fehler.txt geschrieben
und alles was mit stderr ausgegeb wird auf die shell
also genau umgekehrt als von micha beschrieben
Nein, micha hat schon recht.
Wenn du es umgekehrt machst, verhält es sich auch umgekehrt :)
Ciao,
_
peschmae
25-10-2002, 12:57
imho nicht, denn er sagt ja
Das obige Beispiel leitet alle Fehlermeldungen in die Datei fehler.txt. Wenn Du jetzt die ganzen Fehlermeldungen auf stdout ausgibst, wird da nachher nichts drinstehn ...
und es ist ja gerade umgekehrt, oder?
MfG Peschmä
@anda_skoa der NichtLesenKönnen-Virus zieht weite kreise :D, entweder bei mir oder bei dir :confused:
also zusammenfassend stderr ausgaben landen immer auf der shell
stdout in einer datei wenn explicit angegeben
The Ripper
25-10-2002, 14:53
nein, weder stdout noch stderr-ausgaben landen immer auf der shell, wo die ausgaben landen, was damit gemacht wird und ob sie überhaupt erscheinen liegt (bei sauber geschriebenen programmen) ganz im ermessen des benutzers:
befehl > ausgabe.txt # leitet stdout in die datei ausgabe.txt um
befehl 2> fehler.txt # leitet stderr in die datei fehler.txt um, man beachte die 2 vor dem grösser-als-zeichen!
anda_skoa
25-10-2002, 14:55
Original geschrieben von peschmae
@anda_skoa der NichtLesenKönnen-Virus zieht weite kreise :D, entweder bei mir oder bei dir :confused:
:)
Micha's Beispiel leitet den stderr in eine Datei fehler.txt um.
Wenn das Programm nun alle Fehler auf stdout ausgibt, kommt ja nix auf stderr, darum ist dann auch die Datei fehler.txt leer.
Ciao,
_
peschmae
25-10-2002, 15:07
ok, bei mir, mir ist die 2 irgendwie durch den lappen gegangen ;)
MfG Peschmä
Powered by vBulletin® Version 4.2.5 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.