setvbuf()
QNX SDP8.0C Library ReferenceAPIDeveloper
Associate a buffer with a stream
Synopsis:
#include <stdio.h>
int setvbuf( FILE *fp,
char *buf,
int mode,
size_t size );
Arguments:
- fp
- The stream that you want to associate with a buffer.
- buffer
- NULL, or a pointer to the buffer; see below.
- mode
- How you want the stream to be buffered:
- _IOFBF — input and output are fully buffered.
- _IOLBF — output is line-buffered; that is,
the buffer is flushed when a newline character is written,
when the buffer is full, or when input is requested
Note:When input is requested, the buffer is flushed only if it references a special file, such as a tty device.
- _IONBF — input and output are completely unbuffered.
- size
- The size of the buffer.
Library:
libc
Use the -l c option to qcc to link against this library. This library is usually included automatically.
Description:
The setvbuf() function associates a buffer with the stream designated by fp. If you want to call setvbuf(), you must call it after opening the stream, but before doing any reading, writing, or seeking.
If buf isn't NULL, the buffer it points to is used instead of an automatically allocated buffer.
Note:
As a QNX OS extension, you can use the
STDIO_DEFAULT_BUFSIZE environment variable to override
BUFSIZ as the default buffer size for stream I/O. The value of
STDIO_DEFAULT_BUFSIZE must be greater than that of BUFSIZ.
For more information, see
Adjusting the buffer sizein the entry for fopen().
Returns:
- 0
- Success.
- EINVAL
- The mode argument isn't valid.
- ENOMEM
- The buf argument is NULL, size isn't 0, and there isn't enough memory available to allocate a buffer.
Examples:
#include <stdio.h>
#include <stdlib.h>
int main( void )
{
char *buf;
FILE *fp;
fp = fopen( "file", "r" );
buf = malloc( 1024 );
setvbuf( fp, buf, _IOFBF, 1024 );
/* work with fp */
...
fclose( fp );
/* This is OUR buffer, so we have
* to free it. Do that AFTER
* you've closed the file.
*/
free( buf );
return EXIT_SUCCESS;
}
Classification:
Safety: | |
---|---|
Cancellation point | No |
Signal handler | No |
Thread | Yes |
Page updated: