Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
SETVBUF(3)	       FreeBSD Library Functions Manual		    SETVBUF(3)

     setvbuf --	stream buffering operations

     #include <stdio.h>

     setvbuf(FILE *stream, char	*buf, int mode,	size_t size);

     The three types of	stream buffering available are unbuffered, block
     buffered, and line	buffered.  When	an output stream is unbuffered,	infor-
     mation 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	(`\n')
     is	output or input	is read	from any stream	attached to a terminal device
     (typically	stdin).

     The fflush(3) function may	be used	to force the block out early.

     Normally, all files are block buffered.  When the first I/O operation oc-
     curs on a file, malloc(3) is called, and an optimally sized buffer	is ob-
     tained.  If a stream refers to a terminal (as stdout normally does), it
     is	line buffered.

     The standard error	stream stderr is initially unbuffered.

     The setvbuf() function may	be used	to alter the buffering behavior	of a
     stream.  The mode parameter must be one of	the following three macros:

	   _IONBF  unbuffered
	   _IOLBF  line	buffered
	   _IOFBF  fully buffered

     The size parameter	may be given as	zero to	obtain deferred	optimal-size
     buffer allocation as usual.  If it	is not zero, then except for un-
     buffered files, the buf argument should point to a	buffer at least	size
     bytes long; this buffer will be used instead of the current buffer.  (If
     the size argument is not zero but buf is NULL, a buffer of	the given size
     will be allocated immediately, and	released on close.  This is an exten-
     sion to ANSI C; portable code should use a	size of	0 with any NULL	buf-

     The setvbuf() 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 mode is invalid
     or	if the request cannot be honored, a non-zero value is returned,	possi-
     bly setting errno to indicate the error.  The stream is not modified in
     the error case.

     The setvbuf() function will fail if:

     [EBADF]		The stream specified is	not associated with a valid
			file descriptor.

     fclose(3),	fopen(3), fread(3), malloc(3), printf(3), puts(3), setbuf(3)

     The setvbuf() function conforms to	ISO/IEC	9899:1999 ("ISO	C99").

     The setvbuf() function first appeared in 4.4BSD.

FreeBSD	13.0		       November	26, 2014		  FreeBSD 13.0


Want to link to this manual page? Use this URL:

home | help