309 lines
10 KiB
Groff
309 lines
10 KiB
Groff
|
.\" $OpenBSD: stdio.3,v 1.31 2014/07/03 06:08:06 jmc Exp $
|
||
|
.\"
|
||
|
.\" Copyright (c) 1990, 1991, 1993
|
||
|
.\" The Regents of the University of California. All rights reserved.
|
||
|
.\"
|
||
|
.\" Redistribution and use in source and binary forms, with or without
|
||
|
.\" modification, are permitted provided that the following conditions
|
||
|
.\" are met:
|
||
|
.\" 1. Redistributions of source code must retain the above copyright
|
||
|
.\" notice, this list of conditions and the following disclaimer.
|
||
|
.\" 2. Redistributions in binary form must reproduce the above copyright
|
||
|
.\" notice, this list of conditions and the following disclaimer in the
|
||
|
.\" documentation and/or other materials provided with the distribution.
|
||
|
.\" 3. Neither the name of the University nor the names of its contributors
|
||
|
.\" may be used to endorse or promote products derived from this software
|
||
|
.\" without specific prior written permission.
|
||
|
.\"
|
||
|
.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||
|
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||
|
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||
|
.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||
|
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||
|
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||
|
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||
|
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||
|
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||
|
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||
|
.\" SUCH DAMAGE.
|
||
|
.\"
|
||
|
.Dd $Mdocdate: July 3 2014 $
|
||
|
.Dt STDIO 3
|
||
|
.Os
|
||
|
.Sh NAME
|
||
|
.Nm stdio
|
||
|
.Nd standard input/output library functions
|
||
|
.Sh SYNOPSIS
|
||
|
.In stdio.h
|
||
|
.Pp
|
||
|
.Fd FILE *stdin;
|
||
|
.Fd FILE *stdout;
|
||
|
.Fd FILE *stderr;
|
||
|
.Sh DESCRIPTION
|
||
|
The standard I/O library
|
||
|
provides a simple and efficient buffered stream I/O interface.
|
||
|
Input and output is mapped into logical data streams and the physical I/O
|
||
|
characteristics are concealed.
|
||
|
The functions and macros are listed below;
|
||
|
more information is available from the individual man pages.
|
||
|
.Pp
|
||
|
A stream is associated with an external file (which may be a physical
|
||
|
device) by
|
||
|
.Dq opening
|
||
|
a file, which may involve creating a new file.
|
||
|
Creating an existing file causes its former contents to be discarded.
|
||
|
If a file can support positioning requests (such as a disk file, as opposed
|
||
|
to a terminal) then a
|
||
|
.Dq file position indicator
|
||
|
associated with the stream is positioned at the start of the file (byte
|
||
|
zero), unless the file is opened with append mode.
|
||
|
If append mode
|
||
|
is used, the position indicator will be placed at the end-of-file.
|
||
|
The position indicator is maintained by subsequent reads, writes,
|
||
|
and positioning requests.
|
||
|
All input occurs as if the characters
|
||
|
were read by successive calls to the
|
||
|
.Xr fgetc 3
|
||
|
function; all output takes place as if all characters were
|
||
|
written by successive calls to the
|
||
|
.Xr fputc 3
|
||
|
function.
|
||
|
.Pp
|
||
|
A file is disassociated from a stream by
|
||
|
.Dq closing
|
||
|
it.
|
||
|
Output streams are flushed (any unwritten buffer contents are transferred
|
||
|
to the host environment) before the stream is disassociated from the file.
|
||
|
The value of a pointer to a
|
||
|
.Dv FILE
|
||
|
object is indeterminate (garbage) after a file is closed.
|
||
|
.Pp
|
||
|
A file may be subsequently reopened, by the same or another program
|
||
|
execution, and its contents reclaimed or modified (if it can be repositioned
|
||
|
at the start).
|
||
|
If the main function returns to its original caller, or the
|
||
|
.Xr exit 3
|
||
|
function is called, all open files are closed (hence all output
|
||
|
streams are flushed) before program termination.
|
||
|
Other methods of program termination may not close files properly and hence
|
||
|
buffered output may be lost.
|
||
|
In particular,
|
||
|
.Xr _exit 2
|
||
|
does not flush
|
||
|
.Nm
|
||
|
files.
|
||
|
Neither does an exit due to a signal.
|
||
|
Buffers are flushed by
|
||
|
.Xr abort 3 ,
|
||
|
as required by POSIX, although in previous implementations they were not.
|
||
|
.Pp
|
||
|
This implementation needs and makes
|
||
|
no distinction between
|
||
|
.Dq text
|
||
|
and
|
||
|
.Dq binary
|
||
|
streams.
|
||
|
In effect, all streams are binary.
|
||
|
No translation is performed and no extra padding appears on any stream.
|
||
|
.Pp
|
||
|
At program startup, three streams are predefined and need not be
|
||
|
opened explicitly:
|
||
|
.Pp
|
||
|
.Bl -bullet -compact -offset indent
|
||
|
.It
|
||
|
.Em standard input
|
||
|
(for reading conventional input),
|
||
|
.It
|
||
|
.Em standard output
|
||
|
(for writing conventional output), and
|
||
|
.It
|
||
|
.Em standard error
|
||
|
(for writing diagnostic output).
|
||
|
.El
|
||
|
.Pp
|
||
|
These streams are abbreviated
|
||
|
.Em stdin ,
|
||
|
.Em stdout ,
|
||
|
and
|
||
|
.Em stderr .
|
||
|
Initially, the standard error stream
|
||
|
is unbuffered; the standard input and output streams are
|
||
|
fully buffered if and only if the streams do not refer to
|
||
|
an interactive or
|
||
|
.Dq terminal
|
||
|
device, as determined by the
|
||
|
.Xr isatty 3
|
||
|
function.
|
||
|
In fact,
|
||
|
.Em all
|
||
|
freshly opened streams that refer to terminal devices
|
||
|
default to line buffering, and
|
||
|
pending output to such streams is written automatically
|
||
|
whenever such an input stream is read.
|
||
|
Note that this applies only to
|
||
|
.Dq "true reads" ;
|
||
|
if the read request can be satisfied by existing buffered data,
|
||
|
no automatic flush will occur.
|
||
|
In these cases,
|
||
|
or when a large amount of computation is done after printing
|
||
|
part of a line on an output terminal, it is necessary to
|
||
|
.Xr fflush 3
|
||
|
the standard output so that the output will appear immediately.
|
||
|
Alternatively, these defaults may be modified via the
|
||
|
.Xr setvbuf 3
|
||
|
function.
|
||
|
.Pp
|
||
|
The
|
||
|
.Nm stdio
|
||
|
library is a part of the library libc
|
||
|
and routines are automatically loaded as needed by the compiler.
|
||
|
The SYNOPSIS
|
||
|
sections of the following manual pages indicate which include files
|
||
|
are to be used, what the compiler declaration for the function
|
||
|
looks like, and which external variables are of interest.
|
||
|
.Pp
|
||
|
The following are defined as macros;
|
||
|
these names may not be re-used
|
||
|
without first removing their current definitions with
|
||
|
.Dv #undef :
|
||
|
.Dv BUFSIZ ,
|
||
|
.Dv EOF ,
|
||
|
.Dv FILENAME_MAX ,
|
||
|
.Dv FOPEN_MAX ,
|
||
|
.Dv L_ctermid ,
|
||
|
.Dv L_tmpnam ,
|
||
|
.Dv NULL ,
|
||
|
.Dv SEEK_END ,
|
||
|
.Dv SEEK_SET ,
|
||
|
.Dv SEEK_CUR ,
|
||
|
.Dv TMP_MAX ,
|
||
|
.Dv clearerr ,
|
||
|
.Dv feof ,
|
||
|
.Dv ferror ,
|
||
|
.Dv fileno ,
|
||
|
.Dv freopen ,
|
||
|
.Dv fwopen ,
|
||
|
.Dv getc ,
|
||
|
.Dv getchar ,
|
||
|
.Dv putc ,
|
||
|
.Dv putchar ,
|
||
|
.Dv stderr ,
|
||
|
.Dv stdin ,
|
||
|
.Dv stdout .
|
||
|
Function versions of the macro functions
|
||
|
.Xr feof 3 ,
|
||
|
.Xr ferror 3 ,
|
||
|
.Xr clearerr 3 ,
|
||
|
.Xr fileno 3 ,
|
||
|
.Xr getc 3 ,
|
||
|
.Xr getchar 3 ,
|
||
|
.Xr putc 3 ,
|
||
|
and
|
||
|
.Xr putchar 3
|
||
|
exist and will be used if the macro
|
||
|
definitions are explicitly removed.
|
||
|
.Sh LIST OF FUNCTIONS
|
||
|
.Bl -column "sys_errlist" "Description"
|
||
|
.It Sy Function Ta Sy Description
|
||
|
.It asprintf Ta "formatted output conversion with allocation"
|
||
|
.It clearerr Ta "check and reset stream status"
|
||
|
.It dprintf Ta "formatted output conversion"
|
||
|
.It fclose Ta "close a stream"
|
||
|
.It fdopen Ta "stream open functions"
|
||
|
.It feof Ta "check and reset stream status"
|
||
|
.It ferror Ta "check and reset stream status"
|
||
|
.It fflush Ta "flush a stream"
|
||
|
.It fgetc Ta "get next character or word from input stream"
|
||
|
.It fgetln Ta "get a line from a stream"
|
||
|
.It fgetpos Ta "reposition a stream"
|
||
|
.It fgets Ta "get a line from a stream"
|
||
|
.It fgetwc Ta "get next wide character from input stream"
|
||
|
.It fgetws Ta "get a line of wide characters from a stream"
|
||
|
.It fileno Ta "get a stream's underlying file descriptor"
|
||
|
.It fopen Ta "stream open functions"
|
||
|
.It fprintf Ta "formatted output conversion"
|
||
|
.It fpurge Ta "flush a stream"
|
||
|
.It fputc Ta "output a character or word to a stream"
|
||
|
.It fputs Ta "output a line to a stream"
|
||
|
.It fputwc Ta "output a wide character to a stream"
|
||
|
.It fputws Ta "output a line of wide characters to a stream"
|
||
|
.It fread Ta "binary stream input/output"
|
||
|
.It freopen Ta "stream open functions"
|
||
|
.It fropen Ta "open a stream"
|
||
|
.It fscanf Ta "input format conversion"
|
||
|
.It fseek Ta "reposition a stream"
|
||
|
.It fsetpos Ta "reposition a stream"
|
||
|
.It ftell Ta "reposition a stream"
|
||
|
.It funopen Ta "open a stream"
|
||
|
.It fwide Ta "set/get orientation of stream"
|
||
|
.It fwopen Ta "open a stream"
|
||
|
.It fwprintf Ta "formatted wide character output conversion"
|
||
|
.It fwrite Ta "binary stream input/output"
|
||
|
.It getc Ta "get next character or word from input stream"
|
||
|
.It getchar Ta "get next character or word from input stream"
|
||
|
.It getdelim Ta "read a delimited record from a stream"
|
||
|
.It getline Ta "read a delimited record from a stream"
|
||
|
.It getw Ta "get next character or word from input stream"
|
||
|
.It getwc Ta "get next wide character from input stream"
|
||
|
.It getwchar Ta "get next wide character from input stream"
|
||
|
.It mkdtemp Ta "create unique temporary directory"
|
||
|
.It mkstemp Ta "create unique temporary file"
|
||
|
.It mktemp Ta "create unique temporary file"
|
||
|
.It perror Ta "system error messages"
|
||
|
.It printf Ta "formatted output conversion"
|
||
|
.It putc Ta "output a character or word to a stream"
|
||
|
.It putchar Ta "output a character or word to a stream"
|
||
|
.It puts Ta "output a line to a stream"
|
||
|
.It putw Ta "output a character or word to a stream"
|
||
|
.It putwc Ta "output a wide character to a stream"
|
||
|
.It putwchar Ta "output a wide character to a stream"
|
||
|
.It remove Ta "remove directory entry"
|
||
|
.It rewind Ta "reposition a stream"
|
||
|
.It scanf Ta "input format conversion"
|
||
|
.It setbuf Ta "stream buffering operations"
|
||
|
.It setbuffer Ta "stream buffering operations"
|
||
|
.It setlinebuf Ta "stream buffering operations"
|
||
|
.It setvbuf Ta "stream buffering operations"
|
||
|
.It snprintf Ta "formatted output conversion"
|
||
|
.It sprintf Ta "formatted output conversion"
|
||
|
.It sscanf Ta "input format conversion"
|
||
|
.It strerror Ta "system error messages"
|
||
|
.It swprintf Ta "formatted wide character output conversion"
|
||
|
.It sys_errlist Ta "system error messages"
|
||
|
.It sys_nerr Ta "system error messages"
|
||
|
.It tempnam Ta "temporary file routines"
|
||
|
.It tmpfile Ta "temporary file routines"
|
||
|
.It tmpnam Ta "temporary file routines"
|
||
|
.It ungetc Ta "un-get character from input stream"
|
||
|
.It ungetwc Ta "un-get wide character from input stream"
|
||
|
.It vasprintf Ta "formatted output conversion with allocation"
|
||
|
.It vdprintf Ta "formatted output conversion"
|
||
|
.It vfprintf Ta "formatted output conversion"
|
||
|
.It vfscanf Ta "input format conversion"
|
||
|
.It vfwprintf Ta "formatted wide character output conversion"
|
||
|
.It vprintf Ta "formatted output conversion"
|
||
|
.It vscanf Ta "input format conversion"
|
||
|
.It vsnprintf Ta "formatted output conversion"
|
||
|
.It vsprintf Ta "formatted output conversion"
|
||
|
.It vsscanf Ta "input format conversion"
|
||
|
.It vswprintf Ta "formatted wide character output conversion"
|
||
|
.It vwprintf Ta "formatted wide character output conversion"
|
||
|
.It wprintf Ta "formatted wide character output conversion"
|
||
|
.El
|
||
|
.Sh SEE ALSO
|
||
|
.Xr close 2 ,
|
||
|
.Xr open 2 ,
|
||
|
.Xr read 2 ,
|
||
|
.Xr write 2
|
||
|
.Sh STANDARDS
|
||
|
The
|
||
|
.Nm stdio
|
||
|
library conforms to
|
||
|
.St -isoC-99 .
|
||
|
.Sh BUGS
|
||
|
The standard buffered functions do not interact well with certain other
|
||
|
library and system functions, especially
|
||
|
.Xr vfork 2
|
||
|
and
|
||
|
.Xr abort 3 .
|