2003-01-28 23:26:04 +03:00
|
|
|
.\" $NetBSD: stdio.3,v 1.17 2003/01/28 20:26:04 kleink Exp $
|
1995-02-02 04:15:33 +03:00
|
|
|
.\"
|
|
|
|
.\" Copyright (c) 1990, 1991, 1993
|
|
|
|
.\" The Regents of the University of California. All rights reserved.
|
1993-03-21 12:45:37 +03:00
|
|
|
.\"
|
|
|
|
.\" 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. All advertising materials mentioning features or use of this software
|
|
|
|
.\" must display the following acknowledgement:
|
|
|
|
.\" This product includes software developed by the University of
|
|
|
|
.\" California, Berkeley and its contributors.
|
|
|
|
.\" 4. 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.
|
|
|
|
.\"
|
1995-02-02 04:15:33 +03:00
|
|
|
.\" @(#)stdio.3 8.7 (Berkeley) 4/19/94
|
1993-03-21 12:45:37 +03:00
|
|
|
.\"
|
2003-01-28 23:26:04 +03:00
|
|
|
.Dd January 28, 2003
|
1993-03-21 12:45:37 +03:00
|
|
|
.Dt STDIO 3
|
1999-03-22 22:44:33 +03:00
|
|
|
.Os
|
1993-03-21 12:45:37 +03:00
|
|
|
.Sh NAME
|
|
|
|
.Nm stdio
|
|
|
|
.Nd standard input/output library functions
|
1998-02-05 21:45:17 +03:00
|
|
|
.Sh LIBRARY
|
|
|
|
.Lb libc
|
1993-03-21 12:45:37 +03:00
|
|
|
.Sh SYNOPSIS
|
2002-02-07 10:00:09 +03:00
|
|
|
.Fd #include \*[Lt]stdio.h\*[Gt]
|
1993-03-21 12:45:37 +03:00
|
|
|
.Fd FILE *stdin;
|
|
|
|
.Fd FILE *stdout;
|
|
|
|
.Fd FILE *stderr;
|
|
|
|
.Sh DESCRIPTION
|
|
|
|
The standard
|
|
|
|
.Tn I/O
|
|
|
|
library provides a simple and efficient buffered stream
|
|
|
|
.Tn I/O
|
|
|
|
interface.
|
1994-01-11 03:05:54 +03:00
|
|
|
Input and output is mapped into logical data streams
|
1993-03-21 12:45:37 +03:00
|
|
|
and the physical
|
|
|
|
.Tn I/O
|
2002-10-01 21:22:00 +04:00
|
|
|
characteristics are concealed.
|
|
|
|
The functions and macros are listed below;
|
|
|
|
more information is available from the individual man pages.
|
1993-03-21 12:45:37 +03:00
|
|
|
.Pp
|
|
|
|
A stream is associated with an external file (which may be a physical
|
|
|
|
device) by
|
|
|
|
.Em opening
|
2002-10-01 21:22:00 +04:00
|
|
|
a file, which may involve creating a new file.
|
|
|
|
Creating an existing file causes its former contents to be discarded.
|
1993-03-21 12:45:37 +03:00
|
|
|
If a file can support positioning requests (such as a disk file, as opposed
|
|
|
|
to a terminal) then a
|
|
|
|
.Em file position indicator
|
|
|
|
associated with the stream is positioned at the start of the file (byte
|
2002-10-01 21:22:00 +04:00
|
|
|
zero), unless the file is opened with append mode.
|
|
|
|
If append mode
|
1993-03-21 12:45:37 +03:00
|
|
|
is used, the position indicator will be placed the end-of-file.
|
|
|
|
The position indicator is maintained by subsequent reads, writes
|
2002-10-01 21:22:00 +04:00
|
|
|
and positioning requests.
|
|
|
|
All input occurs as if the characters
|
1993-03-21 12:45:37 +03:00
|
|
|
were read by successive calls to the
|
|
|
|
.Xr fgetc 3
|
1994-01-11 03:05:54 +03:00
|
|
|
function; all output takes place as if all characters were
|
1993-03-21 12:45:37 +03:00
|
|
|
read by successive calls to the
|
|
|
|
.Xr fputc 3
|
|
|
|
function.
|
|
|
|
.Pp
|
|
|
|
A file is disassociated from a stream by
|
|
|
|
.Em closing
|
|
|
|
the file.
|
1994-01-11 03:05:54 +03:00
|
|
|
Output streams are flushed (any unwritten buffer contents are transferred
|
1993-03-21 12:45:37 +03:00
|
|
|
to the host environment) before the stream is disassociated from the file.
|
|
|
|
The value of a pointer to a
|
|
|
|
.Dv FILE
|
|
|
|
object is indeterminate after a file is closed (garbage).
|
|
|
|
.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
|
2002-10-01 21:22:00 +04:00
|
|
|
at the start).
|
|
|
|
If the main function returns to its original caller, or the
|
1993-03-21 12:45:37 +03:00
|
|
|
.Xr exit 3
|
|
|
|
function is called, all open files are closed (hence all output
|
2002-10-01 21:22:00 +04:00
|
|
|
streams are flushed) before program termination.
|
|
|
|
Other methods of program termination, such as
|
1993-03-21 12:45:37 +03:00
|
|
|
.Xr abort 3
|
|
|
|
do not bother about closing files properly.
|
|
|
|
.Pp
|
1995-02-02 04:15:33 +03:00
|
|
|
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:
|
|
|
|
.Bl -bullet -compact -offset indent
|
|
|
|
.It
|
2001-09-16 06:08:55 +04:00
|
|
|
.Em standard input
|
1994-01-11 03:05:54 +03:00
|
|
|
(for reading conventional input),
|
1995-02-02 04:15:33 +03:00
|
|
|
.It
|
2001-09-16 06:08:55 +04:00
|
|
|
.Em standard output
|
1995-02-02 04:15:33 +03:00
|
|
|
(for writing conventional output), and
|
|
|
|
.It
|
1993-03-21 12:45:37 +03:00
|
|
|
.Em standard error
|
|
|
|
(for writing diagnostic output).
|
1995-02-02 04:15:33 +03:00
|
|
|
.El
|
1993-03-21 12:45:37 +03:00
|
|
|
These streams are abbreviated
|
|
|
|
.Em stdin , stdout
|
|
|
|
and
|
|
|
|
.Em stderr .
|
1995-02-02 04:15:33 +03:00
|
|
|
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
|
1993-03-21 12:45:37 +03:00
|
|
|
pending output to such streams is written automatically
|
1995-02-02 04:15:33 +03:00
|
|
|
whenever an 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
|
1993-03-21 12:45:37 +03:00
|
|
|
part of a line on an output terminal, it is necessary to
|
|
|
|
.Xr fflush 3
|
|
|
|
the standard output before going off and computing so that the output
|
|
|
|
will appear.
|
1995-02-02 04:15:33 +03:00
|
|
|
Alternatively, these defaults may be modified via the
|
|
|
|
.Xr setvbuf 3
|
|
|
|
function.
|
1993-03-21 12:45:37 +03:00
|
|
|
.Pp
|
|
|
|
The
|
1998-04-29 00:58:00 +04:00
|
|
|
.Nm
|
1993-03-21 12:45:37 +03:00
|
|
|
library is a part of the library
|
1998-04-29 00:58:00 +04:00
|
|
|
.Pa libc.a
|
2001-07-06 22:15:36 +04:00
|
|
|
and routines are automatically loaded as needed by compilers such
|
|
|
|
as
|
|
|
|
.Xr cc 1 .
|
1993-03-21 12:45:37 +03:00
|
|
|
The
|
|
|
|
.Tn 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
|
2003-01-28 23:26:04 +03:00
|
|
|
In multi-threaded applications, operations on streams perform implicit
|
|
|
|
locking, except for the
|
|
|
|
.Fa getc_unlocked ,
|
|
|
|
.Fa getchar_unlocked ,
|
|
|
|
.Fa putc_unlocked ,
|
|
|
|
and
|
|
|
|
.Fa putchar_unlocked
|
|
|
|
functions.
|
|
|
|
Explicit control of stream locking is available through the
|
|
|
|
.Fa flockfile ,
|
|
|
|
.Fa ftrylockfile ,
|
|
|
|
and
|
|
|
|
.Fa funlockfile
|
|
|
|
functions .
|
|
|
|
.Pp
|
1998-04-29 00:58:00 +04:00
|
|
|
The following are defined as macros; these names may not be re-used
|
1993-03-21 12:45:37 +03:00
|
|
|
without first removing their current definitions with
|
|
|
|
.Dv #undef :
|
|
|
|
.Dv BUFSIZ ,
|
|
|
|
.Dv EOF ,
|
|
|
|
.Dv FILENAME_MAX ,
|
1996-05-05 23:21:20 +04:00
|
|
|
.Dv FOPEN_MAX ,
|
1993-03-21 12:45:37 +03:00
|
|
|
.Dv L_cuserid ,
|
|
|
|
.Dv L_ctermid ,
|
2001-09-16 06:17:15 +04:00
|
|
|
.Dv L_tmpnam ,
|
1993-03-21 12:45:37 +03:00
|
|
|
.Dv NULL ,
|
|
|
|
.Dv SEEK_END ,
|
|
|
|
.Dv SEEK_SET ,
|
|
|
|
.Dv SEE_CUR ,
|
|
|
|
.Dv TMP_MAX ,
|
1998-04-29 00:58:00 +04:00
|
|
|
.Fn clearerr ,
|
|
|
|
.Fn feof ,
|
|
|
|
.Fn ferror ,
|
|
|
|
.Fn fileno ,
|
|
|
|
.Fn freopen ,
|
|
|
|
.Fn fwopen ,
|
|
|
|
.Fn getc ,
|
2003-01-28 23:26:04 +03:00
|
|
|
.Fn getc_unlocked ,
|
1998-04-29 00:58:00 +04:00
|
|
|
.Fn getchar ,
|
2003-01-28 23:26:04 +03:00
|
|
|
.Fn getchar_unlocked ,
|
1998-04-29 00:58:00 +04:00
|
|
|
.Fn putc ,
|
2003-01-28 23:26:04 +03:00
|
|
|
.Fn putc_unlocked ,
|
1998-04-29 00:58:00 +04:00
|
|
|
.Fn putchar ,
|
2003-01-28 23:26:04 +03:00
|
|
|
.Fn putchar_unlocked ,
|
1993-03-21 12:45:37 +03:00
|
|
|
.Dv stderr ,
|
|
|
|
.Dv stdin ,
|
|
|
|
.Dv stdout .
|
|
|
|
Function versions of the macro functions
|
1998-04-29 00:58:00 +04:00
|
|
|
.Fn feof ,
|
|
|
|
.Fn ferror ,
|
|
|
|
.Fn clearerr ,
|
|
|
|
.Fn fileno ,
|
|
|
|
.Fn getc ,
|
2003-01-28 23:26:04 +03:00
|
|
|
.Fn getc_unlocked ,
|
1998-04-29 00:58:00 +04:00
|
|
|
.Fn getchar ,
|
2003-01-28 23:26:04 +03:00
|
|
|
.Fn getchar_unlocked ,
|
1998-04-29 00:58:00 +04:00
|
|
|
.Fn putc ,
|
2003-01-28 23:26:04 +03:00
|
|
|
.Fn putc_unlocked ,
|
|
|
|
.Fn putchar ,
|
1993-03-21 12:45:37 +03:00
|
|
|
and
|
2003-01-28 23:26:04 +03:00
|
|
|
.Fn putchar_unlocked
|
1998-04-29 00:58:00 +04:00
|
|
|
exist and will be used if the macros definitions are explicitly removed.
|
1993-03-21 12:45:37 +03:00
|
|
|
.Sh SEE ALSO
|
|
|
|
.Xr close 2 ,
|
2001-09-16 06:17:15 +04:00
|
|
|
.Xr open 2 ,
|
1993-03-21 12:45:37 +03:00
|
|
|
.Xr read 2 ,
|
|
|
|
.Xr write 2
|
|
|
|
.Sh STANDARDS
|
|
|
|
The
|
1998-04-29 00:58:00 +04:00
|
|
|
.Nm
|
1993-03-21 12:45:37 +03:00
|
|
|
library conforms to
|
|
|
|
.St -ansiC .
|
|
|
|
.Sh LIST OF FUNCTIONS
|
2003-01-28 23:26:04 +03:00
|
|
|
.Bl -column "Functionxxxxxxxx" "Description"
|
1993-03-21 12:45:37 +03:00
|
|
|
.Sy Function Description
|
|
|
|
clearerr check and reset stream status
|
|
|
|
fclose close a stream
|
|
|
|
fdopen stream open functions
|
|
|
|
feof check and reset stream status
|
|
|
|
ferror check and reset stream status
|
|
|
|
fflush flush a stream
|
|
|
|
fgetc get next character or word from input stream
|
1994-01-11 03:05:54 +03:00
|
|
|
fgetln get a line from a stream
|
1993-03-21 12:45:37 +03:00
|
|
|
fgetpos reposition a stream
|
|
|
|
fgets get a line from a stream
|
2001-12-07 14:47:40 +03:00
|
|
|
fgetwc get next wide character from input stream
|
1993-03-21 12:45:37 +03:00
|
|
|
fileno check and reset stream status
|
2003-01-28 23:26:04 +03:00
|
|
|
flockfile lock a stream
|
1993-03-21 12:45:37 +03:00
|
|
|
fopen stream open functions
|
|
|
|
fprintf formatted output conversion
|
|
|
|
fpurge flush a stream
|
|
|
|
fputc output a character or word to a stream
|
|
|
|
fputs output a line to a stream
|
2001-12-07 14:47:40 +03:00
|
|
|
fputwc output a wide character to a stream
|
1993-03-21 12:45:37 +03:00
|
|
|
fread binary stream input/output
|
|
|
|
freopen stream open functions
|
|
|
|
fropen open a stream
|
|
|
|
fscanf input format conversion
|
|
|
|
fseek reposition a stream
|
|
|
|
fsetpos reposition a stream
|
|
|
|
ftell reposition a stream
|
2003-01-28 23:26:04 +03:00
|
|
|
ftrylockfile lock a stream (non-blocking)
|
|
|
|
funlockfile unlock a stream
|
1993-03-21 12:45:37 +03:00
|
|
|
funopen open a stream
|
2001-12-07 15:36:11 +03:00
|
|
|
fwide set/get orientation of a stream
|
1993-03-21 12:45:37 +03:00
|
|
|
fwopen open a stream
|
|
|
|
fwrite binary stream input/output
|
|
|
|
getc get next character or word from input stream
|
2003-01-28 23:26:04 +03:00
|
|
|
getc_unlocked get next character or word from input stream
|
|
|
|
(no implicit locking)
|
1993-03-21 12:45:37 +03:00
|
|
|
getchar get next character or word from input stream
|
2003-01-28 23:26:04 +03:00
|
|
|
getchar_unlocked get next character or word from input stream
|
|
|
|
(no implicit locking)
|
1993-03-21 12:45:37 +03:00
|
|
|
gets get a line from a stream
|
|
|
|
getw get next character or word from input stream
|
2001-12-07 14:47:40 +03:00
|
|
|
getwc get next wide character from input stream
|
|
|
|
getwchar get next wide character from input stream
|
1995-02-02 04:15:33 +03:00
|
|
|
mkstemp create unique temporary file
|
|
|
|
mktemp create unique temporary file
|
1993-03-21 12:45:37 +03:00
|
|
|
perror system error messages
|
|
|
|
printf formatted output conversion
|
|
|
|
putc output a character or word to a stream
|
2003-01-28 23:26:04 +03:00
|
|
|
putc_unlocked output a character or word to a stream
|
|
|
|
(no implicit locking)
|
1993-03-21 12:45:37 +03:00
|
|
|
putchar output a character or word to a stream
|
2003-01-28 23:26:04 +03:00
|
|
|
putchar_unlocked output a character or word to a stream
|
|
|
|
(no implicit locking)
|
1993-03-21 12:45:37 +03:00
|
|
|
puts output a line to a stream
|
|
|
|
putw output a character or word to a stream
|
2001-12-07 14:47:40 +03:00
|
|
|
putwc output a wide character to a stream
|
|
|
|
putwchar output a wide character to a stream
|
1993-03-21 12:45:37 +03:00
|
|
|
remove remove directory entry
|
|
|
|
rewind reposition a stream
|
|
|
|
scanf input format conversion
|
|
|
|
setbuf stream buffering operations
|
|
|
|
setbuffer stream buffering operations
|
|
|
|
setlinebuf stream buffering operations
|
|
|
|
setvbuf stream buffering operations
|
|
|
|
snprintf formatted output conversion
|
|
|
|
sprintf formatted output conversion
|
|
|
|
sscanf input format conversion
|
|
|
|
strerror system error messages
|
|
|
|
sys_errlist system error messages
|
|
|
|
sys_nerr system error messages
|
|
|
|
tempnam temporary file routines
|
|
|
|
tmpfile temporary file routines
|
|
|
|
tmpnam temporary file routines
|
|
|
|
ungetc un-get character from input stream
|
2001-12-07 14:47:40 +03:00
|
|
|
ungetwc un-get wide character from input stream
|
1993-03-21 12:45:37 +03:00
|
|
|
vfprintf formatted output conversion
|
|
|
|
vfscanf input format conversion
|
|
|
|
vprintf formatted output conversion
|
|
|
|
vscanf input format conversion
|
|
|
|
vsnprintf formatted output conversion
|
|
|
|
vsprintf formatted output conversion
|
|
|
|
vsscanf input format conversion
|
|
|
|
.El
|
2001-09-16 06:17:15 +04:00
|
|
|
.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 .
|