###

###

###

###

###

###

    SETBUF(3)           Linux Programmer's Manual           SETBUF(3)

    NAME
           setbuf,  setbuffer, setlinebuf, setvbuf - stream buffering
           operations

    SYNOPSIS
           #include <stdio.h>

           int setbuf( FILE *stream, char *buf);
           int setbuffer( FILE *stream, char *buf, size_tsize);
           int setlinebuf( FILE *stream);
           int setvbuf( FILE *stream, char *buf, int mode , 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  new-
           line  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.

           The setvbuf function may be used at any time 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  be  used at any time, but can only
           change the mode of a stream when  it  is  not  ``active'':
           that  is,  before  any I/O, or immediately after a call to
           fflush.

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

                  setvbuf(stream,  buf,  buf    _IOFBF   :   _IONBF,

    BSD MANPAGE              29 November 1993                       1

    SETBUF(3)           Linux Programmer's Manual           SETBUF(3)

                  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 BUFSIZ.  The setlinebuf function
           is exactly equivalent to the call:

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

### SEE ALSO

fopen, fclose, fread, malloc, puts, printf,

###

###

###

    STANDARDS
           The   setbuf   and   setvbuf  functions  conform  to  ANSI
           C3.159-1989 (``ANSI C'').

    BUGS
           The setbuffer and setlinebuf functions are not portable to
           versions  of  BSD  before 4.2BSD, and may not be available
           under Linux.  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;
           }

    BSD MANPAGE              29 November 1993                       2

Top | Master Index | Keywords | Functions

This manual page was brought to you by mjl_man V-2.0