Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ setbuffer(3S) — Reliant UNIX 5.44c4

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

malloc(3C)

fclose(3S)

getc(3S)

fopen(3S)

fread(3S)

printf(3S)

putc(3S)

puts(3S)

setbuffer(3S)           (BSD Compatibility Package)           setbuffer(3S)

NAME
     setbuffer, setlinebuf - Einem Datenstrom Puffer zuordnen

SYNTAX
     /usr/ucb/cc [flag ...] file ... -lucb

     #include <stdio.h>

     setbuffer(stream, buf, size)
     FILE *stream;
     char *buf;
     int size;

     setlinebuf(stream)
     FILE *stream;

BESCHREIBUNG
     Die drei verfügbaren Puffermöglichkeiten sind "nicht gepuffert",
     "Blockpufferung" und "Zeilenpufferung". Wenn ein Ausgabedatenstrom
     nicht gepuffert ist, werden die Daten direkt in der Zieldatei oder am
     Terminal angezeigt. Bei Blockpufferung werden viele Zeichen gespei-
     chert und dann als Block geschrieben. Bei Zeilenpufferung werden alle
     Zeichen bis zu einem Zeilenvorschub (NEWLINE) gespeichert oder die
     Eingabe aus jedem zeilengepufferten Eingabestrom wird gelesen. fflush
     kann verwendet werden, um die Zeichen aus einem Blockpuffer vorzeitig
     auszugeben. Normalerweise sind alle Dateien blockgepuffert. Ein Puffer
     wird durch malloc beim ersten Abrufen (getc) oder Schreiben (putc) von
     Zeichen aus der/in die Datei zugeordnet.

     Standardmäßig ist die Ausgabe an ein Terminal zeilengepuffert, mit
     Ausnahme der Ausgabe an den Standarddatenstrom stderr, die nicht
     gepuffert ist. Die restliche Ein-/Ausgabe ist vollständig gepuffert.

     setbuffer kann nach dem Öffnen eines Datenstroms verwendet werden,
     jedoch nicht mehr, nachdem er gelesen oder in ihn geschrieben wurde.
     Das Zeichen-Array buf, dessen Größe durch das Argument size festgelegt
     wird, wird anstelle eines automatisch zugeordneten Puffers verwendet.
     Handelt es sich bei buf um den NULL-Zeiger, ist die Ein-/Ausgabe nicht
     gepuffert. Eine Konstante BUFSIZ, definiert in der Include-Datei
     <stdio.h>, gibt die erforderliche Größe des Arrays an:

          char buf[BUFSIZ];

     Mit setlinebuf wird die Puffermethode eines Datenstroms von blockge-
     puffert oder nicht gepuffert in zeilengepuffert geändert. Anders als
     mit setbuffer kann diese Funktion zu jeder Zeit, wenn der Datei-
     Deskriptor aktiv ist, verwendet werden.








Seite 1                      Reliant UNIX 5.44               Gedruckt 11/98

setbuffer(3S)           (BSD Compatibility Package)           setbuffer(3S)

     Die Pufferung einer Datei kann mit freopen von nicht gepuffert oder
     von zeilengepuffert in blockgepuffert geändert werden. Mit freopen,
     gefolgt von setbuffer mit dem Pufferargument NULL, kann die Pufferung
     einer Datei von block- oder zeilengepuffert in nicht gepuffert geän-
     dert werden.

HINWEISE
     Eine typische Fehlerquelle liegt darin, daß Pufferbereich als "automa-
     tische" Variable in einem Codeblock zugeordnet wird, ohne anschließend
     den Datenstrom im selben Block zu schließen.

SIEHE AUCH
     malloc(3C), fclose(3S), getc(3S), fopen(3S), fread(3S), printf(3S),
     putc(3S), puts(3S).








































Seite 2                      Reliant UNIX 5.44               Gedruckt 11/98

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026