FOPEN(3S) FOPEN(3S) NAME fopen, freopen, fdopen - open a stream SYNOPSIS #include FILE *fopen(filename, type) char *filename, *type; FILE *freopen(filename, type, stream) char *filename, *type; FILE *stream; FILE *fdopen(fildes, type) char *type; DESCRIPTION _F_o_p_e_n opens the file named by _f_i_l_e_n_a_m_e and associates a stream with it. _F_o_p_e_n returns a pointer to be used to identify the stream in subsequent operations. _T_y_p_e is a character string having one of the following values: "r" open for reading "w" create for writing "a" append: open for writing at end of file, or create for writing In addition, each _t_y_p_e may be followed by a "+" to have the file opened for reading and writing. "r+" positions the stream at the beginning of the file, "w+" creates or truncates it, and "a+" positions it at the end. Both reads and writes may be used on read/write streams, with the limitation that an _f_s_e_e_k_, _r_e_w_i_n_d_, or reading an end-of-file must be used between a read and a write or vice-versa. _F_r_e_o_p_e_n substitutes the named file in place of the open _s_t_r_e_a_m. It returns the original value of _s_t_r_e_a_m. The original stream is closed. _F_r_e_o_p_e_n is typically used to attach the preopened constant names, stdin, stdout, stderr, to specified files. _F_d_o_p_e_n associates a stream with a file descriptor obtained from _o_p_e_n_, _d_u_p_, _c_r_e_a_t_, or _p_i_p_e(2). The _t_y_p_e of the stream must agree with the mode of the open file. SEE ALSO open(2), fclose(3) DIAGNOSTICS _F_o_p_e_n and _f_r_e_o_p_e_n return the pointer NULL if _f_i_l_e_n_a_m_e cannot be accessed, if too many files are already open, or if other resources needed cannot be allocated. BUGS _F_d_o_p_e_n is not portable to systems other than UNIX. The read/write _t_y_p_e_s do not exist on all systems. Those systems with‐ out read/write modes will probably treat the _t_y_p_e as if the "+" was not present. These are unreliable in any event. In order to support the same number of open files as does the system, _f_o_p_e_n must allocate additional memory for data structures using _c_a_l_l_o_c after 20 files have been opened. This confuses some programs which use their own memory allocators. An undocumented routine, _f__p_r_e_a_l_l_o_c, may be called to force immediate allocation of all internal memory except for buffers. 4th Berkeley Distribution May 27, 1986 FOPEN(3S)