Standard-Datenströme
Standard-Datenströme - Datenströme für die Ein- und Ausgabe im Betriebssystem Unix oder in verwandten Betriebssystemen
Beschreibung

Standard-Datenströme (standard streams) sind drei Datenströme für die Ein- und Ausgabe im Betriebssystem Unix und in verwandten Betriebssystemen
- Sie werden auch von der C-Standard-Bibliothek unterstützt
- Viele Programme verwenden automatisch die Standardein- bzw. -ausgabe
- wenn auf der Kommandozeile keine Dateien für die Ein- oder Ausgabe angegeben werden
Datenkanal | Name | file handle | Device |
---|---|---|---|
Standardeingabe | STDIN | 0 | Keyboard |
Standardausgabe | STDOUT | 1 | Display |
Standardfehlerausgabe | STDERR | 2 | Display |
Standardeingabe
- Standardeingabe (stdin)
Über die Standardeingabe können Daten in ein Programm eingelesen werden
- Normalerweise ist sie mit der Tastatur verbunden, d. h. Programme empfangen die Benutzereingaben über die Standardeingabe
- Unter Unix entspricht der Standardeingabe die Gerätedatei /dev/stdin, der Datei-Deskriptor hat die Nummer 0
- Beispiel
Hier wird die Standardeingabe für das Programm less aus der Datei eingaben.txt gelesen
$ less < eingaben.txt
Standardausgabe
- Standardausgabe (stdout)
Über die Standardausgabe kann ein Programm Daten ausgeben
- Normalerweise ist sie mit dem Monitor verbunden, d. h. Programme senden Ausgabetexte über die Standardausgabe an den Benutzer
- Unter Unix entspricht der Standardausgabe die Gerätedatei /dev/stdout, der Datei-Deskriptor hat die Nummer 1
Beispiel: Hier wird die Standardausgabe des Programms find in die Datei ausgaben.txt umgeleitet
$ find . -name '*.html' > ausgaben.txt
gleichbedeutend
$ find . -name '*.html' 1> ausgaben.txt
Standardfehlerausgabe
- Standardfehlerausgabe (stderr)
Die Standardfehlerausgabe ist ein zweiter Ausgabedatenstrom, der dazu gedacht ist, Fehler- und Statusmeldungen auszugeben
- Normalerweise ist er ebenfalls mit dem Monitor verbunden; allerdings kann er getrennt von der Standardausgabe umgeleitet werden, so dass Fehlermeldungen nicht mit den ausgegebenen Nutzdaten vermischt werden
- Unter Unix entspricht der Standardfehlerausgabe die Gerätedatei /dev/stderr, der Datei-Deskriptor hat die Nummer 2
Beispiel: Hier werden die Fehlermeldungen des Programms find in die Datei fehlermeldungen.txt umgeleitet, während die Standardausgabe über eine Pipe an das Programm less weitergeleitet wird
$ find . -name '*.html' 2> fehlermeldungen.txt | less
Ausgabeumleitung
- Umleiten der Fehlermeldungen in stdout
$ find . -name '*.html' 2>&1 | less
Hier ist dies so zu verstehen: „Leite stderr (ebenfalls) dorthin um, wo stdout jetzt gerade hinzeigt.“
- Beispiel
$ find . -name '*.html' 2>&1 1> gefundene.txt | less
stderr wird auf den Bildschirm/Scrn: umgeleitet, danach stdout in die Datei 'gefundene.txt'; stderr wird hierbei nicht mit in die Datei umgeleitet, da es ja nicht „in stdout“ geleitet wurde, sondern „dorthin, wo stdout hinzeigt(e)“
- Die Verkettung mit less bewirkt also das seitenweise Anzeigen der Fehlermeldungen
- Beispiel
$ find . -name '*.html' 1> gefundene.txt 2>&1 | less
stdout wird in die Datei gefundene.txt umgeleitet, dann stderr dorthin, wo stdout gerade zeigt (also ebenfalls in die Datei), für less bleibt nichts übrig!
Anhang
Siehe auch
Links
Weblinks