*nix Documentation Project
·  Home
 +   man pages
·  Linux HOWTOs
·  FreeBSD Tips
·  *niX Forums

  man pages->Linux man pages -> setbuf (3)              



NAME    [Toc]    [Back]

       setbuf, setbuffer, setlinebuf, setvbuf - stream buffering operations

SYNOPSIS    [Toc]    [Back]

       #include <stdio.h>

       void setbuf(FILE *stream, char *buf);
       void setbuffer(FILE *stream, char *buf, size_tsize);
       void setlinebuf(FILE *stream);
       int setvbuf(FILE *stream, char *buf, int mode , size_t size);

DESCRIPTION    [Toc]    [Back]

       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
       output or input is read from any stream attached to a  terminal	device
       (typically  stdin).   The  function  fflush(3) may be used to force the
       block out early.   (See	fclose(3).)   Normally	all  files  are  block
       buffered.   When the first I/O operation occurs on a file, malloc(3) is
       called, and a buffer is obtained.  If a stream refers to a terminal (as
       stdout  normally  does) it is line buffered.  The standard error stream
       stderr is always unbuffered by default.

       The setvbuf function may be used on  any  open  stream  to  change  its
       buffer.	The mode parameter must be one of the following three macros:

	      _IONBF unbuffered

	      _IOLBF line buffered

	      _IOFBF fully buffered

       Except  for unbuffered 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 argument buf is NULL, only the mode is affected; a
       new buffer will be allocated on the next read or write operation.   The
       setvbuf function may only be used after opening a stream and before any
       other operations have been performed on it.

       The other three calls are, in  effect,  simply  aliases	for  calls  to
       setvbuf.  The setbuf function is exactly equivalent to the call

	      setvbuf(stream, buf, buf ? _IOFBF : _IONBF, BUFSIZ);

       The  setbuffer function is the same, except that the size of the buffer
       is up to the caller, rather than being determined by the  default  BUF-
       SIZ.  The setlinebuf function is exactly equivalent to the call:

	      setvbuf(stream, (char *)NULL, _IOLBF, 0);

RETURN VALUE    [Toc]    [Back]

       The  function setvbuf returns 0 on success.  It can return any value on
       failure, but returns nonzero when mode is invalid or the request cannot
       be  honoured.  It  may  set  errno on failure.  The other functions are

CONFORMING TO    [Toc]    [Back]

       The setbuf and setvbuf functions conform to  ANSI  X3.159-1989  (``ANSI

BUGS    [Toc]    [Back]

       The  setbuffer and 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, setbuf always uses a suboptimal buffer size
       and should be avoided.

       You must make sure that both buf and the space it points to still exist
       by  the	time  stream is closed, which also happens at program termination.

       For example, the following is illegal:

       #include <stdio.h>
       int main()
	   char buf[BUFSIZ];
	   setbuf(stdin, buf);
	   printf("Hello, world!\n");
	   return 0;

SEE ALSO    [Toc]    [Back]

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

Linux				  2001-06-09			     SETBUF(3)
[ Back ]
 Similar pages
Name OS Title
setbuf Tru64 Assign buffering to a stream
setvbuf_unlocked Tru64 Assign buffering to a stream
setvbuf Tru64 Assign buffering to a stream
setlinebuf Tru64 Assign buffering to a stream
setbuffer Tru64 Assign buffering to a stream
setbuf IRIX assign buffering to a stream logical unit FORTRAN SYNOPSIS #include character *(BUFSIZ+8) buf intege
BIO_f_buffer NetBSD buffering BIO
BIO_f_buffer Tru64 Buffering BIO
getzbuffer IRIX returns whether z-buffering is on or off
TIFFbuffer IRIX I/O buffering control routines
Copyright © 2004-2005 DeniX Solutions SRL
newsletter delivery service