Provided by:
manpages-es_1.55-10_all 
NOMBRE
fopen, fdopen, freopen - funciones de apertura de flujos
SINOPSIS
#include <stdio.h>
FILE *fopen(const char *path, const char *mode);
FILE *fdopen(int fildes, const char *mode);
FILE *freopen(const char *path, const char *mode, FILE *stream);
DESCRIPCI'ON
La funcion fopen abre el fichero cuyo nombre es la cadena apuntada por
camino y asocia un flujo de datos a el.
El argumento modo apunta a una cadena que empieza con una de las
siguientes secuencias (a las que pueden seguir caracteres adicionales):
r Abre un fichero de texto para lectura. El flujo se posiciona al
principio del fichero.
r+ Abre para lectura y escritura. El flujo se posiciona al
principio del fichero.
w Trunca el fichero a longitud cero o crea un fichero de texto
para escritura. El flujo se posiciona al principio del fichero.
w+ Abre para lectura y escritura. El fichero se crea si no existe,
en otro caso se trunca. El flujo se posiciona al principio del
fichero.
a Abre para anadir (escribir al final del fichero). El fichero se
crea si no existe. El flujo se posiciona al final del fichero.
a+ Abre para leer y anadir (escribir al final del fichero). El
fichero se crea si no existe. El flujo se posiciona al final del
fichero.
La cadena modo tambien puede incluir la letra ``b'' como ultimo
caracter o entre los de cualquiera de las cadenas de dos caracteres
descritas anteriormente. Todo esto es estrictamente por compatibilidad
con ANSI X3.159-1989 (``ANSI C'') y no tiene efecto. La ``b'' se ignora
en todos los sistemas conformes con POSIX, incluido Linux. (Otros
sistemas pueden tratar los ficheros de texto y los ficheros binarios de
forma diferente, y anadir la ``b'' puede ser una buena idea si realiza
E/S de un fichero binario y espera que su programa pueda ser
transportado a entornos no Unix).
Cualquier fichero creado tendra de permisos
S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH (0666), modificados por
el valor de la mascara umask del proceso (vea umask(2)).
Las lecturas y las escrituras pueden mezclarse en flujos abiertos para
lectura/escritura en cualquier orden. Observe que C ANSI requiere que
intervenga una funcion de posicionamiento entre la salida y la entrada,
a menos que una operacion de entrada encuentre el fin-de-fichero. (Si
esta condicion no se cumple, entonces se permite a una lectura devolver
el resultado de escrituras distintas a la mas reciente.) Por lo tanto
es buena practica (y desde luego necesario algunas veces bajo Linux)
hacer una operacion fseek o fgetpos entre operaciones de escritura y
lectura en tal flujo. Esta operacion puede ser aparentemente inutil
(como en fseek(..., 0L, SEEK_CUR)), llamada por su efecto lateral de
sincronizacion.
Abrir un fichero para anadir (a como primer caracter de mode) implica
que todas las operaciones de escritura posteriores sobre el flujo se
realicen al final del fichero, como si fueran precedidas por una
llamada
fseek(stream,0,SEEK_END);
La funcion fdopen asocia un flujo con el descriptor de fichero
existente, descf. El modo del flujo (uno de los valores "r",
"r+", "w", "w+", "a", "a+") debe ser compatible con el del
descriptor de fichero. Al indicador de posicion de fichero del
nuevo flujo se le asigna el valor del indicador de posicion
perteneciente a descf y los indicadores de error y de fin-de-
fichero se limpian. Los modos "w" y "w+" no provocan el
trucamiento del fichero. El descriptor de fichero no es
duplicado y se cerrara cuando el flujo creado por fdopen se
cierre. El resultado de aplicar fdopen a un objeto compartido
de memoria es indefinido.
La funcion freopen abre el fichero cuyo nombre es la cadena
apuntada por camino y asocia el flujo apuntado por flujo con el.
El flujo original (si existe) se cierra. El argumento modo se
emplea igual que en la funcion fopen. El uso principal de la
funcion freopen es cambiar el fichero asociado con un flujo de
texto estandar (stderr, stdin, o stdout).
VALOR DEVUELTO
Cuando acaban bien, fopen, fdopen y freopen devuelven un puntero a
FILE. Cuando no, devuelven NULL y la variable global errno contiene un
valor que indica el error.
ERRORES
EINVAL El modo pasado a fopen, fdopen, o a freopen no era valido.
Las funciones fopen, fdopen y freopen tambien pueden fallar y poner un
valor en errno para cualquiera de los errores especificados para la
rutina malloc(3).
La funcion fopen tambien puede fallar y poner un valor en errno para
cualquiera de los errores especificados para la rutina open(2).
La funcion fdopen tambien puede fallar y poner un valor en errno para
cualquiera de los errores especificados para la rutina fcntl(2).
La funcion freopen tambien puede fallar y poner un valor en errno para
cualquiera de los errores especificados para las rutinas open(2),
fclose(3) y fflush(3).
CONFORME A
Las funciones fopen y freopen son conformes con ANSI X3.159-1989 (``C
ANSI''). La funcion fdopen es conforme con IEEE Std1003.1-1988
(``POSIX.1'').
V'EASE TAMBI'EN
open(2), fclose(3), fileno(3)