|
|
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.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.