diff options
Diffstat (limited to 'reference/C/MAN/setbuf.htm')
-rw-r--r-- | reference/C/MAN/setbuf.htm | 167 |
1 files changed, 167 insertions, 0 deletions
diff --git a/reference/C/MAN/setbuf.htm b/reference/C/MAN/setbuf.htm new file mode 100644 index 0000000..fc4ddeb --- /dev/null +++ b/reference/C/MAN/setbuf.htm @@ -0,0 +1,167 @@ +<TITLE>setbuf</TITLE> +<body bgcolor="#ffffcc"> +<hr> +<pre> + + + +<h3>SETBUF(3) Linux Programmer's Manual SETBUF(3) +</h3> + +<h3>NAME +</h3> setbuf, setbuffer, setlinebuf, setvbuf - stream buffering + operations + +<h3>SYNOPSIS +</h3> #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); + +<h3>DESCRIPTION +</h3> 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, + + + +<h3>BSD MANPAGE 29 November 1993 1 +</h3> + + + + +<h3>SETBUF(3) Linux Programmer's Manual SETBUF(3) +</h3> + + 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); + +</pre> +<hr> +<h3>SEE ALSO +</h3><p> +<a href=fopen.htm>fopen</a>, +<a href=fclose.htm>fclose</a>, +<a href=fread.htm>fread</a>, +<a href=malloc.htm>malloc</a>, +<a href=puts.htm>puts</a>, +<a href=printf.htm>printf</a>, +<pre> + +<h3>STANDARDS +</h3> The setbuf and setvbuf functions conform to ANSI + C3.159-1989 (``ANSI C''). + +<h3>BUGS +</h3> 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; + } + + + + + + + + + + + + + + + + + + + + +<h3>BSD MANPAGE 29 November 1993 2 +</h3> + +
</pre> +<P> +<hr> +<p> +<center> +<table border=2 width=80%> +<tr align=center> +<td width=25%> +<a href=../cref.html>Top</a> +</td><td width=25%> +<a href=../master_index.html>Master Index</a> +</td><td width=25%> +<a href=../SYNTAX/keywords.html>Keywords</a> +</td><td width=25%> +<a href=../FUNCTIONS/funcref.htm>Functions</a> +</td> +</tr> +</table> +</center> +<p> +<hr> + +This manual page was brought to you by <i>mjl_man V-2.0</i> |