2.9BSD/usr/man/cat3/stdio.3s


STDIO(3S)           UNIX Programmer's Manual            STDIO(3S)

NAME
     stdio - standard buffered input/output package

SYNOPSIS
     #include <stdio.h>

     FILE *stdin;
     FILE *stdout;
     FILE *stderr;

DESCRIPTION
     The functions described in Sections 3S constitute an effi-
     cient user-level buffering scheme.  The in-line macros _g_e_t_c
     and _p_u_t_c(3) handle characters quickly.  The higher level
     routines _g_e_t_s, _f_g_e_t_s, _s_c_a_n_f, _f_s_c_a_n_f, _f_r_e_a_d, _p_u_t_s, _f_p_u_t_s,
     _p_r_i_n_t_f, _f_p_r_i_n_t_f, _f_w_r_i_t_e all use _g_e_t_c and _p_u_t_c; they can be
     freely intermixed.

     A file with associated buffering is called a _s_t_r_e_a_m, and is
     declared to be a pointer to a defined type FILE. _F_o_p_e_n(3)
     creates certain descriptive data for a stream and returns a
     pointer to designate the stream in all further transactions.
     There are three normally open streams with constant pointers
     declared in the include file and associated with the stan-
     dard open files:

     stdin     standard input file
     stdout    standard output file
     stderr    standard error file

     A constant `pointer' NULL (0) designates no stream at all.

     An integer constant EOF (-1) is returned upon end of file or
     error by integer functions that deal with streams.

     Any routine that uses the standard input/output package must
     include the header file <stdio.h> of pertinent macro defini-
     tions.  The functions and constants mentioned in sections
     labeled 3S are declared in the include file and need no
     further declaration.  The constants, and the following
     `functions' are implemented as macros; redeclaration of
     these names is perilous: _g_e_t_c, _g_e_t_c_h_a_r, _p_u_t_c, _p_u_t_c_h_a_r, _f_e_o_f,
     _f_e_r_r_o_r, _f_i_l_e_n_o.

SEE ALSO
     open(2), close(2), read(2), write(2)

DIAGNOSTICS
     The value EOF is returned uniformly to indicate that a FILE
     pointer has not been initialized with _f_o_p_e_n, input (output)
     has been attempted on an output (input) stream, or a FILE
     pointer designates corrupt or otherwise unintelligible FILE

Printed 12/9/82                                                 1

STDIO(3S)           UNIX Programmer's Manual            STDIO(3S)

     data.

     For purposes of efficiency, this implementation of the stan-
     dard library has been changed to line buffer output to a
     terminal by default and attempts to do this transparently by
     flushing the output whenever a _r_e_a_d(2) from the standard
     input is necessary.  This is almost always transparent, but
     may cause confusion or malfunctioning of programs which use
     standard i/o routines but use _r_e_a_d(2) themselves to read
     from the standard input.

     In cases where a large amount of computation is done after
     printing part of a line on an output terminal, it is neces-
     sary to _f_f_l_u_s_h(3) the standard output before going off and
     computing so that the output will appear.

Printed 12/9/82                                                 2