.\" -*- coding: UTF-8 -*- .\" Copyright (c) 1980, 1991 Regents of the University of California. .\" All rights reserved. .\" .\" This code is derived from software contributed to Berkeley by .\" the American National Standards Committee X3, on Information .\" Processing Systems. .\" .\" %%%LICENSE_START(BSD_4_CLAUSE_UCB) .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" 3. All advertising materials mentioning features or use of this software .\" must display the following acknowledgement: .\" This product includes software developed by the University of .\" California, Berkeley and its contributors. .\" 4. Neither the name of the University nor the names of its contributors .\" may be used to endorse or promote products derived from this software .\" without specific prior written permission. .\" .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" %%%LICENSE_END .\" .\" @(#)setbuf.3 6.10 (Berkeley) 6/29/91 .\" .\" Converted for Linux, Mon Nov 29 14:55:24 1993, faith@cs.unc.edu .\" Added section to BUGS, Sun Mar 12 22:28:33 MET 1995, .\" Thomas.Koenig@ciw.uni-karlsruhe.de .\" Correction, Sun, 11 Apr 1999 15:55:18, .\" Martin Vicente .\" Correction, 2000-03-03, Andreas Jaeger .\" Added return value for setvbuf, aeb, .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH SETBUF 3 "6. März 2019" Linux Linux\-Programmierhandbuch .SH BEZEICHNUNG setbuf, setbuffer, setlinebuf, setvbuf \- Pufferaktionen für Streams .SH ÜBERSICHT .nf \fB#include \fP .PP \fBvoid setbuf(FILE *\fP\fIstream\fP\fB, char *\fP\fIbuf\fP\fB);\fP .PP \fBvoid setbuffer(FILE *\fP\fIstream\fP\fB, char *\fP\fIbuf\fP\fB, size_t \fP\fIsize\fP\fB);\fP .PP \fBvoid setlinebuf(FILE *\fP\fIstream\fP\fB);\fP .PP \fBint setvbuf(FILE *\fP\fIstream\fP\fB, char *\fP\fIbuf\fP\fB, int \fP\fImode\fP\fB, size_t \fP\fIsize\fP\fB);\fP .fi .PP .RS -4 Mit Glibc erforderliche Makros (siehe \fBfeature_test_macros\fP(7)): .RE .PP \fBsetbuffer\fP(), \fBsetlinebuf\fP(): Seit Glibc 2.19: _DEFAULT_SOURCE Glibc 2.19 und älter: _BSD_SOURCE .SH 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 \fIstdin\fP). Die Funktion \fBfflush\fP(3) darf dazu verwendet werden, ein frühes Leeren des Puffers zu erzwingen (siehe auch \fBfclose\fP(3)). .PP Normalerweise sind alle Dateien block\-gepuffert. Wenn ein Datenstrom mit einem Terminal verbunden ist (wie bei \fIstdout\fP normalerweise der Fall), ist er zeilen\-gepuffert. Der Standardfehlerstrom (\fIstderr\fP) ist standardmäßig immer nicht gepuffert. .PP Die Funktion \fBsetvbuf\fP() wird genutzt, um zu jedem beliebigen Zeitpunkt die Pufferung eines geöffneten Streams zu ändern. Als Parameter wird \fImode\fP wird eine der drei folgenden Konstanten verwendet: .RS .TP \fB_IONBF\fP nicht gepuffert .TP \fB_IOLBF\fP Zeilenpufferung .TP \fB_IOFBF\fP voll gepuffert .RE .PP Mit Ausnahme von ungepufferten Dateien sollte mit dem Argument \fIbuf\fP ein Zeiger auf einen Puffer angegeben werden, der mindestens \fIsize\fP Byte groß ist. Dieser Puffer wird anstelle des aktuellen Puffers verwendet. Wenn für \fIbuf\fP \fBNULL\fP angegeben wird, ist nur der Modus betroffen; bei der nächsten Schreib\- oder Leseaktion wird ein neuer Puffer reserviert. Die Funktion \fIsetvbuf\fP() darf nur dann angewendet werden, nachdem ein Stream geöffnet wurde und bevor irgendwelche anderen Aktionen darauf ausgeführt wurden. .PP Die anderen drei Funktionen sind im Endeffekt einfache Aliase für Aufrufe von \fBsetvbuf\fP(). Die Funktion \fBsetbuf\fP() entspricht genau dem folgendem Aufruf: .PP .in +4n setvbuf(stream, buf, buf ? _IOFBF : _IONBF, BUFSIZ); .in .PP Die Funktion \fBsetbuffer\fP() ist die gleiche, bis auf die Tatsache, dass die Größe des Puffers vom Aufrufer bestimmt anstatt von der Voreinstellung \fBBUFSIZ\fP übernommen wird. Die Funktion \fBsetlinebuf\fP() entspricht genau dem folgendem Aufruf: .PP .in +4n setvbuf(stream, NULL, _IOLBF, 0); .in .SH RÜCKGABEWERT Die Funktion \fBsetvbuf\fP() gibt bei Erfolg 0 zurück. Sie gibt im Fehlerfall (\fImode\fP ist ungültig oder der Anfrage kann nicht genügt werden) ungleich Null zurück und darf dann \fIerrno\fP setzen. .PP Die anderen Funktionen liefern keinen Wert zurück. .SH ATTRIBUTE Siehe \fBattributes\fP(7) für eine Erläuterung der in diesem Abschnitt verwandten Ausdrücke. .TS allbox; lbw23 lb lb l l l. Schnittstelle Attribut Wert T{ \fBsetbuf\fP(), \fBsetbuffer\fP(), .br \fBsetlinebuf\fP(), \fBsetvbuf\fP() T} Multithread\-Fähigkeit MT\-Safe .TE .SH "KONFORM ZU" Die Funktionen \fBsetbuf\fP() und \fBsetvbuf\fP() sind konform zu C89 und C99. .SH FEHLER .\" The .\" .BR setbuffer () .\" and .\" .BR setlinebuf () .\" functions are not portable to versions of BSD before 4.2BSD, and .\" are available under Linux since libc 4.5.21. .\" On 4.2BSD and 4.3BSD systems, .\" .BR setbuf () .\" always uses a suboptimal buffer size and should be avoided. .\".PP Sie müssen sicherstellen, dass der Puffer \fIbuf\fP zu dem Zeitpunkt, zu dem der Stream \fIstream\fP geschlossen wird, noch existiert, was ebenfalls bei Programmende geschieht. .PP .EX #include int main(void) { char buf[BUFSIZ]; setbuf(stdin, buf); printf("Hallo, Welt!\en"); return 0; } .EE .SH "SIEHE AUCH" \fBstdbuf\fP(1), \fBfclose\fP(3), \fBfflush\fP(3), \fBfopen\fP(3), \fBfread\fP(3), \fBmalloc\fP(3), \fBprintf\fP(3), \fBputs\fP(3) .SH KOLOPHON Diese Seite ist Teil der Veröffentlichung 5.10 des Projekts Linux\-\fIman\-pages\fP. 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/. .SH ÜBERSETZUNG Die deutsche Übersetzung dieser Handbuchseite wurde von Martin Eberhard Schauer und Helge Kreutzmann erstellt. Diese Übersetzung ist Freie Dokumentation; lesen Sie die .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License Version 3 .UE 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 .MT debian-l10n-german@\:lists.\:debian.\:org Mailingliste der Übersetzer .ME .