119 lines
2.9 KiB
Groff
119 lines
2.9 KiB
Groff
|
||
|
||
SETBUF(3) Minix Programmer's Manual SETBUF(3)
|
||
|
||
|
||
NAME
|
||
setbuf, setvbuf - assign buffering to a stream
|
||
|
||
SYNOPSIS
|
||
#include <stdio.h>
|
||
|
||
int setbuf(FILE *stream, char *buf)
|
||
int setvbuf(FILE *stream, char *buf, int type, size_t size)
|
||
|
||
DESCRIPTION
|
||
The three types of buffering available are unbuffered, block buffered,
|
||
and line buffered. When an output stream is unbuffered, information
|
||
appears on the destination file or terminal as soon as written; when it
|
||
is block buffered many characters are saved up and written as a block;
|
||
when it is line buffered characters are saved up until a newline is
|
||
encountered or input is read from stdin. Fflush (see fclose(3)) may be
|
||
used to force the block out early. Normally all files are block
|
||
buffered. A buffer is obtained from malloc(3) upon the first getc or
|
||
putc(3) on the file. If the standard stream stdout refers to a terminal
|
||
it is line buffered. The standard stream stderr is always unbuffered.
|
||
|
||
Setbuf is used after a stream has been opened but before it is read or
|
||
written. The character array buf is used instead of an automatically
|
||
allocated buffer. If buf is the constant pointer NULL, input/output will
|
||
be completely unbuffered. A manifest constant BUFSIZ tells how big an
|
||
array is needed:
|
||
|
||
char buf[BUFSIZ];
|
||
|
||
Setvbuf, an alternate form of setbuf, is used after a stream has been
|
||
opened but before it is read or written. It has three uses, depending on
|
||
the value of the type argument:
|
||
|
||
setvbuf(stream, buf, _IOFBF, size)
|
||
Causes input/output to be fully buffered using the character array
|
||
buf whose size is determined by the size argument. If buf is the
|
||
constant pointer NULL, then an automatically allocated buffer will
|
||
be used.
|
||
|
||
setvbuf(stream, buf, _IOLBF, size)
|
||
Like above, except that output will be line buffered, i.e. the
|
||
buffer will be flushed when a newline is written, the buffer is
|
||
full, or input is requested.
|
||
|
||
setvbuf(stream, buf, _IONBF, size)
|
||
Causes input/output to be completely unbuffered. Buf and size are
|
||
ignored.
|
||
|
||
|
||
|
||
|
||
|
||
4BSD May 12, 1986 1
|
||
|
||
|
||
|
||
SETBUF(3) Minix Programmer's Manual SETBUF(3)
|
||
|
||
|
||
A file can be changed between unbuffered, line buffered, or block
|
||
buffered by using freopen (see fopen(3)) followed by the appropriate
|
||
setvbuf call.
|
||
|
||
SEE ALSO
|
||
fopen(3), getc(3), putc(3), malloc(3), fclose(3), puts(3), printf(3),
|
||
fread(3).
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
4BSD May 12, 1986 2
|
||
|