Zum Inhalt springen

Standard-Datenströme

Aus Foxwiki

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


Beschreibung

Standard-Datenströme für Eingabe, Ausgabe, und Fehler

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



  1. https://de.wikipedia.org/wiki/Standard-Datenstr%C3%B6me