Provided by: manpages-de-dev_1.4-1_all bug

BEZEICHNUNG

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

ÜBERSICHT

       #include <stdio.h>

       void setbuf(FILE *stream, char *buf);

       void setbuffer(FILE *stream, char *buf, size_t size);

       void setlinebuf(FILE *stream);

       int setvbuf(FILE *stream, char *buf, int mode, size_t size);

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

       setbuffer(), setlinebuf(): _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 die erste E/A-Operation auf  einer  Datei  durchgeführt  wird,  wird
       malloc(3)  aufgerufen  und  ein  Puffer  angelegt.  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  wird  mode  wird  eine  der  drei  folgenden
       Konstanten verwendet:

              _IONBF nicht gepuffert

              _IOLBF Zeilenpufferung

              _IOFBF voll gepuffert

       Mit  Ausnahme  von  ungepufferten Dateien sollte mit dem Argument buf ein Zeiger auf einen
       Puffer angegeben werden, der mindestens size Byte groß ist. Dieser  Puffer  wird  anstelle
       des  aktuellen  Puffers  verwendet.  Wenn  für  buf NULL angegeben wird, ist nur der Modus
       betroffen; bei der nächsten Schreib- oder Leseoperation wird ein neuer Puffer  reserviert.
       Die  Funktion setvbuf() darf nur dann angewendet werden, nachdem ein Stream geöffnet wurde
       und bevor irgendwelche anderen Operationen 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 (mode ist
       ungültig oder der Anfrage kann nicht genügt werden) ungleich Null  zurück  und  darf  dann
       errno setzen.

       Die anderen Funktionen geben keinen Wert zurück.

KONFORM ZU

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

FEHLER

       Die  Funktionen  setbuffer()  und  setlinebuf()  sind nicht portabel auf BSD-Versionen vor
       4.2BSD und sind unter Linux seit Libc 4.5.21. Auf 4.2BSD-  und  4.3BSD-Systemen  verwendet
       setbuf() immer eine suboptimale Puffergröße und sollte vermieden werden.

       Sie  müssen  sicherstellen, dass der Puffer buf 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(stdin, buf);
           printf("Hallo, Welt!\n");
           return 0;
       }

SIEHE AUCH

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

KOLOPHON

       This page is part of release 3.54 of the Linux man-pages project.  A  description  of  the
       project,     and    information    about    reporting    bugs,    can    be    found    at
       http://www.kernel.org/doc/man-pages/.

ÜBERSETZUNG

       Die  deutsche  Übersetzung  dieser  Handbuchseite  wurde  von  Martin   Eberhard   Schauer
       <Martin.E.Schauer@gmx.de> erstellt.

       Diese  Übersetzung  ist  Freie  Dokumentation;  lesen  Sie  die GNU General Public License
       Version  3  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 <debian-l10n-german@lists.debian.org>.