Provided by: manpages-de-dev_4.15.0-9_all bug

BEZEICHNUNG

       setbuf, setbuffer, setlinebuf, setvbuf - Pufferaktionen für Streams

ÜBERSICHT

       #include <stdio.h>

       int setvbuf(FILE *restrict stream, char *restrict Puffer,
                   int Modus, size_t groesse);

       void setbuf(FILE *restrict stream, char *restrict Puffer);
       void setbuffer(FILE *restrict stream, char *restrict Puffer,
                   size_t groesse);
       void setlinebuf(FILE *stream);

   Mit Glibc erforderliche Makros (siehe feature_test_macros(7)):

       setbuffer(), setlinebuf():
           Seit Glibc 2.19:
               _DEFAULT_SOURCE
           Glibc 2.19 und älter:
               _BSD_SOURCE

BESCHREIBUNG

       Die  drei  verfügbaren  Typen  von  Pufferungen  sind nicht gepuffert, block-gepuffert und
       zeilen-gepuffert.  Wenn  ein  Ausgabe-Stream   nicht   gepuffert   ist,   erscheinen   die
       Informationen  in  der  Zieldatei  oder  auf  dem  Terminal direkt nachdem sie geschrieben
       wurden. Wenn die Ausgabe block-gepuffert ist, werden viele Zeichen erst  einmal  gesammelt
       und  dann  in  einem  Rutsch ausgegeben. Wenn die Ausgabe zeilen-gepuffert ist, werden die
       Zeichen bis zu einem Zeilenvorschub-Zeichen  gesammelt  und  erst  dann  ausgegeben,  oder
       Eingaben  wurden von einem beliebigen Datenstrom gelesen, der mit einem Endgerät verbunden
       ist (üblicherweise stdin). Die Funktion fflush(3) darf dazu verwendet werden,  ein  frühes
       Leeren des Puffers zu erzwingen (siehe auch fclose(3)).

       Normalerweise  sind  alle  Dateien block-gepuffert. Wenn ein Datenstrom mit einem Terminal
       verbunden ist (wie bei stdout  normalerweise  der  Fall),  ist  er  zeilen-gepuffert.  Der
       Standardfehlerstrom (stderr) ist standardmäßig immer nicht gepuffert.

       Die  Funktion setvbuf() wird genutzt, um zu jedem beliebigen Zeitpunkt die Pufferung eines
       geöffneten Streams zu ändern. Als Parameter Modus wird eine der drei folgenden  Konstanten
       verwendet:

              _IONBF nicht gepuffert

              _IOLBF Zeilenpufferung

              _IOFBF voll gepuffert

       Mit Ausnahme von ungepufferten Dateien sollte mit dem Argument Puffer ein Zeiger auf einen
       Puffer angegeben werden, der mindestens groesse Byte groß ist. Dieser Puffer wird anstelle
       des  aktuellen  Puffers  verwendet. Wenn für Puffer NULL angegeben wird, ist nur der Modus
       betroffen; bei der nächsten Schreib- oder Leseaktion wird ein neuer Puffer reserviert. Die
       Funktion  setvbuf() darf nur dann angewendet werden, nachdem ein Stream geöffnet wurde und
       bevor irgendwelche anderen Aktionen darauf ausgeführt wurden.

       Die anderen drei Funktionen sind im Endeffekt einfache Aliase für Aufrufe  von  setvbuf().
       Die Funktion setbuf() entspricht genau dem folgendem Aufruf:

           setvbuf(stream, buf, buf ? _IOFBF : _IONBF, BUFSIZ);

       Die Funktion setbuffer() ist die gleiche, bis auf die Tatsache, dass die Größe des Puffers
       vom Aufrufer bestimmt anstatt von der Voreinstellung BUFSIZ übernommen wird. Die  Funktion
       setlinebuf() entspricht genau dem folgendem Aufruf:

           setvbuf(stream, NULL, _IOLBF, 0);

RÜCKGABEWERT

       Die  Funktion  setvbuf()   gibt  bei  Erfolg  0  zurück. Sie gibt im Fehlerfall (Modus ist
       ungültig oder der Anfrage kann nicht genügt werden) ungleich Null  zurück  und  darf  dann
       errno setzen.

       Die anderen Funktionen liefern keinen Wert zurück.

ATTRIBUTE

       Siehe attributes(7) für eine Erläuterung der in diesem Abschnitt verwandten Ausdrücke.

       ┌───────────────────────────────────────────────────────┬───────────────────────┬─────────┐
       │SchnittstelleAttributWert    │
       ├───────────────────────────────────────────────────────┼───────────────────────┼─────────┤
       │setbuf(), setbuffer(), setlinebuf(), setvbuf()         │ Multithread-Fähigkeit │ MT-Safe │
       └───────────────────────────────────────────────────────┴───────────────────────┴─────────┘

KONFORM ZU

       Die Funktionen setbuf() und setvbuf() sind konform zu C89 und C99.

ANMERKUNGEN

       POSIX  vermerkt, dass der Wert von errno nach einem Aufruf von setbuf() nicht spezifiziert
       ist und merkt weiterhin an, dass Anwendungen stattdessen setvbuf() verwenden  sollten,  um
       Fehler  zu  erkennen,  da  der  Wert  von  errno  sich nach einem erfolgreichen Aufruf von
       setbuf() nicht verändert haben muss.

FEHLER

       Sie müssen sicherstellen, dass der Puffer zu dem  Zeitpunkt,  zu  dem  der  Stream  stream
       geschlossen wird, noch existiert, was ebenfalls bei Programmende geschieht.

       #include <stdio.h>

       int
       main(void)
       {
           char buf[BUFSIZ];
           setbuf(stdout, buf);
           printf("Hallo, Welt!\n");
           return 0;
       }

SIEHE AUCH

       stdbuf(1), fclose(3), fflush(3), fopen(3), fread(3), malloc(3), printf(3), puts(3)

KOLOPHON

       Diese  Seite  ist  Teil  der  Veröffentlichung  5.13  des  Projekts  Linux-man-pages. Eine
       Beschreibung des Projekts, Informationen, wie Fehler  gemeldet  werden  können  sowie  die
       aktuelle Version dieser Seite finden sich unter https://www.kernel.org/doc/man-pages/.

ÜBERSETZUNG

       Die   deutsche   Übersetzung  dieser  Handbuchseite  wurde  von  Martin  Eberhard  Schauer
       <Martin.E.Schauer@gmx.de> und Helge Kreutzmann <debian@helgefjell.de> erstellt.

       Diese Übersetzung ist Freie Dokumentation;  lesen  Sie  die  GNU  General  Public  License
       Version  3 ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩ oder neuer bezüglich der Copyright-
       Bedingungen. Es wird KEINE HAFTUNG übernommen.

       Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-
       Mail an die Mailingliste der Übersetzer ⟨debian-l10n-german@lists.debian.org⟩.