Provided by: manpages-de-dev_4.27.0-1_all bug

BEZEICHNUNG

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

BIBLIOTHEK

       Standard-C-Bibliothek (libc, -lc)

ÜBERSICHT

       #include <stdio.h>

       int setvbuf(FILE *restrict datenstrom, char Puffer[restrict .groesse],
                   int Modus, size_t groesse);

       void setbuf(FILE *restrict datenstrom, char *restrict Puffer);
       void setbuffer(FILE *restrict datenstrom, char buf[restrict .groesse],
                   size_t groesse);
       void setlinebuf(FILE *datenstrom);

   Mit Glibc erforderliche Feature-Test-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-Sicher │
       └───────────────────────────────────────────────────────────────────┴───────────────────────┴───────────┘

STANDARDS

       setbuf()
       setvbuf()
              C11, POSIX.1-2008.

GESCHICHTE

       setbuf()
       setvbuf()
              C89, POSIX.1-2001.

WARNUNGEN

       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  datenstrom  geschlossen
       wird, noch existiert, was ebenfalls bei Programmende geschieht.

       #include <stdio.h>

       int
       main(void)
       {
           char buf[BUFSIZ];

           setbuf(stdout, buf);
           printf("Hello, world!\n");
           return 0;
       }

SIEHE AUCH

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

ÜBERSETZUNG

       Die    deutsche    Übersetzung    dieser    Handbuchseite    wurde    von    Martin    Eberhard   Schauer
       <Martin.E.Schauer@gmx.de>,   Helge    Kreutzmann    <debian@helgefjell.de>    und    Mario    Blättermann
       <mario.blaettermann@gmail.com> 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  die
       Mailingliste der Übersetzer: debian-l10n-german@lists.debian.org.

Linux man-pages 6.9.1                             15. Juni 2024                                        setbuf(3)