stdio(3S) stdio(3S)
NAME
stdio: stdin, stdout, stderr - Standardbezeichner für gepufferte Ein-
/Ausgabe-Streams
SYNTAX
#include <stdio.h>
FILE *stdin, *stdout, *stderr;
BESCHREIBUNG
Die im Abschnitt 3S dieses Handbuchs beschriebenen Funktionen stellen
einen leistungsfähigen E/A-Pufferungsmechanismus auf Benutzerebene
dar. Die Makros getc() und putc() können Zeichen rasch bearbeiten. Die
Makros getchar() und putchar() und die Routinen auf höherer Ebene
fgetc(), fgets(), fprintf(), fputc(), fputs(), fread(), fscanf(),
fwrite(), gets(), getw(), printf(), puts(), putw() und scanf() verwen-
den getc() und putc() oder funktionieren so, als ob sie diese verwen-
den; sie sind beliebig gemischt verwendbar.
Eine Datei mit zugeordneten E/A-Puffer wird als Stream bezeichnet und
als Zeiger auf einen vordefinierten Typ FILE vereinbart. fopen()
erstellt verschiedene Daten für eine solche Datei und gibt einen Zei-
ger zurück, über den die Datei bei allen weiteren Vorgängen angespro-
chen wird. Normalerweise gibt es drei offene Dateien mit konstanten
Dateizeigern, die in der Include-Datei stdio.h definiert und den Stan-
darddateien zugeordnet sind:
stdin Standardeingabe
stdout Standardausgabe
stderr Standardfehlerausgabe
Die folgenden symbolischen Werte in unistd.h definieren die Dateide-
skriptoren, die mit stdin, stdout und stderr der Sprache C verbunden
werden, wenn das Anwendungsprogramm gestartet wird:
STDINFILENO Standardeingabe-Wert, stdin (0).
STDOUTFILENO Standardausgabe-Wert, stdout (1).
STDERRFILENO Standardfehler-Wert, stderr (2).
Eine Konstante NULL bezeichnet einen Nullzeiger.
Eine ganzzahlige Konstante EOF (-1) wird von den meisten ganzzahligen
Funktionen, die mit Dateizeigern arbeiten, bei einem Dateiende oder
einem Fehler ausgegeben (siehe Details in den Einzelbeschreibungen).
Eine ganzzahlige Konstante BUFSIZ gibt die Größe der Puffer an, die
für die jeweilige Implementierung definiert ist.
Seite 1 Reliant UNIX 5.44 Gedruckt 11/98
stdio(3S) stdio(3S)
Eine ganzzahlige Konstante FILENAMEMAX gibt die Größe für ein char-
Feld an, das den längsten Pfadnamen, der in der Implementierung geöff-
net werden kann, aufnehmen kann.
Eine ganzzahlige Konstante FOPENMAX gibt die Mindestanzahl von
Dateien an, von denen die Implementierung garantiert, daß sie gleich-
zeitig geöffnet werden können. Beachten Sie, daß nicht mehr als 255
Dateien mit fopen() geöffnet werden können, und daß nur Dateideskrip-
toren zwischen 0 und 255 gültig sind.
Jedes mit diesem Paket arbeitende Programm muß die Include-Datei mit
den notwendigen Makrodefinitionen wie folgt verwenden:
#include <stdio.h>
Die mit (3S) markierten Funktionen und Konstanten werden in der
Include-Datei deklariert und benötigen keine weitere Deklaration. Die
Konstanten und nachstehenden "Funktionen" sind als Makros implemen-
tiert (ein Neudeklarieren dieser Namen ist gefährlich!): getc(),
getchar(), putc(), putchar(), ferror(), feof(), clearerr() und
fileno(). Es gibt auch Funktionsversionen von getc(), getchar(),
putc(), putchar(), ferror(), feof(), clearerr() und fileno().
Mit Ausnahme der Standardfehlerausgabe stderr wird die Ausgabe stan-
dardmäßig gepuffert, wenn sie sich auf eine Datei bezieht, und zeilen-
weise gepuffert, wenn die Ausgabe auf ein Terminal geht. Die Standard-
fehlerausgabe stderr ist standardmäßig ungepuffert, jedoch kann die
Pufferung oder die zeilenweise Pufferung mit freopen() [siehe
fopen(3S)] eingestellt werden. Wenn die Ausgabe ungepuffert ist, wer-
den die Daten sofort beim Schreiben in die Warteschlange für die Ziel-
datei oder den Bildschirm gebracht; wenn die Ausgabe gepuffert ist,
werden Zeichen gespeichert und dann als Block geschrieben. Wenn die
Ausgabe zeilenweise gepuffert ist, wird jede Ausgabezeile in die War-
teschlange des zugeordnete Bildschirms eingetragen, und sobald die
Zeile beendet ist (d. h., sobald ein Neue-Zeile-Zeichen geschrieben
oder Eingabe vom Terminal angefordert wird) ausgegeben. setbuf() oder
setvbuf() (beide in setbuf(3S) beschrieben) können die Pufferungsstra-
tegie einer Datei ändern.
ERGEBNIS
Ungültige Dateizeiger können möglicherweise zu einem Programmabbruch
führen. Eine genauere Erläuterung der möglichen Fehlerbedingungen ist
bei den einzelnen Funktionsbeschreibungen zu finden.
SIEHE AUCH
close(2), lseek(2), open(2), pipe(2), read(2), write(2), ctermid(3S),
cuserid(3S), fclose(3S), ferror(3S), fopen(3S), fread(3S), fseek(3S),
getc(3S), gets(3S), popen(3S), printf(3S), putc(3S), puts(3S),
scanf(3S), setbuf(3S), system(3S), tmpfile(3S), tmpnam(3S),
ungetc(3S), unistd(4), stdio(5).
Seite 2 Reliant UNIX 5.44 Gedruckt 11/98