summaryrefslogtreecommitdiff
path: root/reference/C/MAN/setbuf.htm
diff options
context:
space:
mode:
Diffstat (limited to 'reference/C/MAN/setbuf.htm')
-rw-r--r--reference/C/MAN/setbuf.htm167
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 &lt;stdio.h&gt;
+
+ 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 &lt;stdio.h&gt;
+ 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>