home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Fresh Fish 8
/
FreshFishVol8-CD1.bin
/
gnu
/
man
/
cat3
/
setbuf.0
< prev
next >
Wrap
Text File
|
1993-12-07
|
4KB
|
133 lines
SETBUF(3) UNIX Programmer's Manual SETBUF(3)
NNAAMMEE
sseettbbuuff, sseettbbuuffffeerr, sseettlliinneebbuuff, sseettvvbbuuff - stream buffering operations
SSYYNNOOPPSSIISS
##iinncclluuddee <<ssttddiioo..hh>>
_i_n_t
sseettbbuuff(_F_I_L_E _*_s_t_r_e_a_m, _c_h_a_r _*_b_u_f)
_i_n_t
sseettbbuuffffeerr(_F_I_L_E _*_s_t_r_e_a_m, _c_h_a_r _*_b_u_f, _s_i_z_e___t _s_i_z_e)
_i_n_t
sseettlliinneebbuuff(_F_I_L_E _*_s_t_r_e_a_m)
_i_n_t
sseettvvbbuuff(_F_I_L_E _*_s_t_r_e_a_m, _c_h_a_r _*_b_u_f, _i_n_t _m_o_d_e, _s_i_z_e___t _s_i_z_e)
DDEESSCCRRIIPPTTIIOONN
The three types of buffering available are unbuffered, block buffered,
and line buffered. When an output stream is unbuffered, information ap
pears 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 ob
tained. If a stream refers to a terminal (as _s_t_d_o_u_t normally does) it is
line buffered. The standard error stream _s_t_d_e_r_r is always unbuffered.
The sseettvvbbuuff() function may be used at any time on any open stream to
change its buffer. The _m_o_d_e parameter must be one of the following three
macros:
_IONBF unbuffered
_IOLBF line buffered
_IOFBF fully buffered
Except for unbuffered files, the _b_u_f argument should point to a buffer at
least _s_i_z_e bytes long; this buffer will be used instead of the current
buffer. If the argument _b_u_f is NULL, only the mode is affected; a new
buffer will be allocated on the next read or write operation. The
sseettvvbbuuff() 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 imme
diately after a call to fflush.
The other three calls are, in effect, simply aliases for calls to
sseettvvbbuuff(). The sseettbbuuff() function is exactly equivalent to the call
setvbuf(stream, buf, buf ? _IOFBF: _IONBF, BUFSIZ);
The sseettbbuuffffeerr() 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 sseettlliinneebbuuff() function is exactly equivalent to the call:
setvbuf(stream, (char *)NULL, _IOLBF, 0);
SSEEEE AALLSSOO
fopen(3), fclose(3), fread(3), malloc(3), puts(3), printf(3)
SSTTAANNDDAARRDDSS
The sseettbbuuff() and sseettvvbbuuff() functions conform to ANSI C3.1591989 (``ANSI
C'').
BBUUGGSS
The sseettbbuuffffeerr() and sseettlliinneebbuuff() functions are not portable to versions
of BSD UNIX before 4.2BSD. On 4.2BSD and 4.3BSD systems, sseettbbuuff() always
uses a suboptimal buffer size and should be avoided.
4th Berkeley Distribution June 29, 1991 2