The three types of stream 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 line
buffered, characters are saved up until a newline
’) is output or input is read from
any stream attached to a terminal device (typically
function may be used
to force the block out early.
Normally, all files are block buffered. When the first I/O operation occurs on a
is called, and
an optimally sized buffer is obtained. If a stream refers to a terminal (as
normally does), it is line buffered.
The standard error stream stderr
() function may be used to alter the
buffering behavior of a stream. The mode
parameter must be one of the following three macros:
parameter may be given as zero to
obtain deferred optimal-size buffer allocation as usual. If it is not zero,
then except for unbuffered files, the buf
argument should point to a buffer at least
bytes long; this buffer will be used
instead of the current buffer. (If the size
argument is not zero but buf
, a buffer of the given size will be
allocated immediately, and released on close. This is an extension to ANSI C;
portable code should use a size of 0 with any
() function may be used at any time, but
may have peculiar side effects (such as discarding input or flushing output)
if the stream is “active”. Portable applications should call it
only once on any given stream, and before any I/O is performed.
Upon successful completion, a value of 0 is returned. If
is invalid or if the request cannot be
honored, a non-zero value is returned, possibly setting
to indicate the error. The stream is
not modified in the error case.
() function will fail if:
- The stream specified is
not associated with a valid file descriptor.
() function conforms to
() function first appeared in