![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]() ![]()
Für jedes Programm werden folgende FILE - Zeiger eingerichtet (in <stdio.h
Hierzu erst mal eine kleine Grafik...
![]()
Hier sehen sie das stdin normalerweise für die Tastatur und stdout und stderr für den Bildschirm eingestellt sind. Also somit liest jedes scanf und fscanf.....
..die Standarteingabe von der Tastatur und jedes printf und fprintf....
...werden Zeichen auf dem Bildschirm ausgegeben. Hierzu noch ein einfaches kurzes Programm zum besseren Verständnis....
Wir lesen hier so lange von stdin (Tastatur) bis wir selbst EOF erzeugen. Wenn sie <ENTER
Bildlich sieht dies wie folgt aus...... ![]()
...mit unserem Programm oben funktioniert. Mit dieser Umleitung wurde praktisch der "test.txt" in die Standarteingabe (stdin) umgeleitet. Hiermit könne sie keine Eingabe mehr von Tastatur machen. Und folge dessen leiten sie mittels...
Das ganze wieder Bildlich.... ![]()
...denn "test.txt" auf die Standarteingabe (stdin) und "kopietext" auf die Standartausgabe (stdout) um. In diesem Fall wird gar nichts mehr auf dem Bildschirm ausgegeben da die Standartausgabe (stdout) ja umgeleitet wurde zu "kopietext.txt". Sie können das mit dem Programm oben ruhig testen. Diese Konstanten sind in der Headerdatei <unistd.h
Hier leiten wir die Ausgabe von ls nach stdout (0). Da dies eh
Standardmäßig geschieht ist dieser Fall banal.
Hier erstellen wir einen neuen Kanal mit der Nummer 3. Alle Umlenkungen
in diesem Kanal werden auf die Datei log.log ausgeführt (angehängt).
Beispielsweise wollen wir nun Kanal 1 (stdout) umleiten in Kanal 3....
Schon wird die Ausgabe von der Standardausgabe in Kanal 3 (log.log) geschrieben.
Den Kanal können sie nun wieder schließen mit....
Wollen sie nun aus einen Kanal lesen müssen wir diesen erst dafür öffnen....
Nun können sie aus diesem Kanal wieder mittels.....
..lesen was die Datei log.log beinhaltet. Diese Methode wird sehr oft verwendet bei Shell-Skripts, damit die Ausgabe auf die Standardkanäle nicht berührt werden, um stattdessen in eine Protokolldatei zu schreiben. Es wäre doch ärgerlich wenn sie auf einer Konsole arbeiten und bekommen andauernd ein Fehlermeldung ausgegeben. Soviel in kürze zur Shell-Programmierung. Kein Sorge, davon kommt nicht mehr. ![]() ![]() ![]() |