Annotation of 43BSDReno/lib/libc/stdio/fopen.3, revision 1.1.1.1

1.1       root        1: .\" Copyright (c) 1980 Regents of the University of California.
                      2: .\" All rights reserved.  The Berkeley software License Agreement
                      3: .\" specifies the terms and conditions for redistribution.
                      4: .\"
                      5: .\"    @(#)fopen.3     6.4 (Berkeley) 4/1/89
                      6: .\"
                      7: .TH FOPEN 3  "April 1, 1989"
                      8: .UC 4
                      9: .SH NAME
                     10: fopen, freopen, fdopen \- open a stream
                     11: .SH SYNOPSIS
                     12: .B #include <stdio.h>
                     13: .PP
                     14: .SM
                     15: .B FILE
                     16: .B *fopen(filename, type)
                     17: .br
                     18: .B char *filename, *type;
                     19: .PP
                     20: .SM
                     21: .B FILE
                     22: .B *freopen(filename, type, stream)
                     23: .br
                     24: .B char *filename, *type;
                     25: .br
                     26: .SM
                     27: .B FILE
                     28: .B *stream;
                     29: .PP
                     30: .SM
                     31: .B FILE
                     32: .B *fdopen(fildes, type)
                     33: .br
                     34: .B char *type;
                     35: .SH DESCRIPTION
                     36: .I Fopen
                     37: opens the file named by
                     38: .I filename
                     39: and associates a stream with it.
                     40: .I Fopen
                     41: returns a pointer to be used to identify the stream in subsequent operations.
                     42: .PP
                     43: .I Type
                     44: is a character string having one of the following values:
                     45: .TP 5
                     46: "r"
                     47: open for reading
                     48: .ns
                     49: .TP 5
                     50: "w"
                     51: create for writing
                     52: .ns
                     53: .TP 5
                     54: "a"
                     55: append: open for writing at end of file, or create for writing
                     56: .PP
                     57: In addition, each
                     58: .I type
                     59: may be followed by a "+" to have the file opened for reading and writing.
                     60: "r+" positions the stream at the beginning of the file, "w+" creates
                     61: or truncates it, and "a+" positions it at the end.  Both reads and writes
                     62: may be used on read/write streams, with the limitation that an
                     63: .I fseek, rewind,
                     64: or reading an end-of-file must be used between a read and a write or vice-versa.
                     65: .PP
                     66: .I Freopen
                     67: substitutes the named file in place of the open
                     68: .IR stream .
                     69: It returns the original value of
                     70: .IR stream .
                     71: The original stream is closed.
                     72: .PP
                     73: .I Freopen
                     74: is typically used to attach the preopened constant names,
                     75: .B stdin, stdout, stderr,
                     76: to specified files.
                     77: .PP
                     78: .I Fdopen
                     79: associates a stream with a file descriptor obtained from
                     80: .I open, dup, creat,
                     81: or
                     82: .IR pipe (2).
                     83: The
                     84: .I type
                     85: of the stream must agree with the mode of the open file.
                     86: .SH "SEE ALSO"
                     87: open(2),
                     88: fclose(3)
                     89: .SH DIAGNOSTICS
                     90: .I Fopen
                     91: and 
                     92: .I freopen
                     93: return the pointer
                     94: .SM
                     95: .B NULL
                     96: if
                     97: .I filename
                     98: cannot be accessed,
                     99: if too many files are already open,
                    100: or if other resources needed cannot be allocated.
                    101: .SH BUGS
                    102: .I Fdopen
                    103: is not portable to systems other than UNIX.
                    104: .PP
                    105: The read/write 
                    106: .I types
                    107: do not exist on all systems.  Those systems without
                    108: read/write modes will probably treat the 
                    109: .I type
                    110: as if the "+" was not present.  These are unreliable in any event.
                    111: .PP
                    112: In order to support the same number of open files as does the system,
                    113: .I fopen
                    114: must allocate additional memory for data structures using
                    115: .I calloc
                    116: after 20 files have been opened.
                    117: This confuses some programs which use their own memory allocators.
                    118: An undocumented routine,
                    119: .IR f_prealloc ,
                    120: may be called to force immediate allocation of all internal memory
                    121: except for buffers.

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.