Section: Manual del Programador de Linux (3)
Updated: 19 enero 1998
Index Return to Main
Contents
fopen, fdopen, freopen - funciones de apertura de flujos
FILE *fopen( const char *camino, const char
*modo);
FILE *fdopen( int descf, const char
*modo);
FILE *freopen( const char *camino, const char
*modo, FILE *flujo);
La función fopen abre el fichero cuyo nombre es la cadena apuntada por camino y asocia un flujo de datos a él.
El argumento modo apunta a una cadena que empieza con una de las siguientes secuencias (a las que pueden seguir caracteres adicionales):
La cadena modo también puede incluir la letra ``b'' como último carácter o entre los de cualquiera de las cadenas de dos caracteres descritas anteriormente. Todo esto es estrictamente por compatibilidad con ANSI C3.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 añadir 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 tendrá de permisos S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH| S_IWOTH (0666), modificados por el valor de la máscara 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 función de posicionamiento entre la salida y la entrada, a menos que una operación de entrada encuentre el fin-de-fichero. (Si esta condición no se cumple, entonces se permite a una lectura devolver el resultado de escrituras distintas a la más reciente.) Por lo tanto es buena práctica (y desde luego necesario algunas veces bajo Linux) hacer una operación fseek o fgetpos entre operaciones de escritura y lectura en tal flujo. Esta operación puede ser aparentemente inútil (como en fseek(..., 0L, SEEK_CUR)), llamada por su efecto lateral de sincronización.
La función 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 posición de fichero del nuevo flujo se le asigna el valor del indicador de posición 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 cerrará cuando el flujo creado por fdopen se cierre. El resultado de aplicar fdopen a un objeto compartido de memoria es indefinido.
La función freopen abre el fichero cuyo nombre es la cadena apuntada por camino y asocia el flujo apuntado por flujo con él. El flujo original (si existe) se cierra. El argumento modo se emplea igual que en la función fopen. El uso principal de la función freopen es cambiar el fichero asociado con un flujo de texto estándar (stderr, stdin, o stdout).
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.
Las funciones fopen, fdopen y freopen también pueden fallar y poner un valor en errno para cualquiera de los errores especificados para la rutina malloc(3).
La función fopen también puede fallar y poner un valor en errno para cualquiera de los errores especificados para la rutina open(2).
La función fdopen también puede fallar y poner un valor en errno para cualquiera de los errores especificados para la rutina fcntl(2).
La función freopen también puede fallar y poner un valor en errno para cualquiera de los errores especificados para las rutinas open(2), fclose(3) y fflush(3).
Las funciones fopen y freopen son conformes con ANSI C3.159-1989 (``C ANSI''). La función fdopen es conforme con IEEE Std1003.1-1988 (``POSIX.1'').
(2), fclose(3)
This document was created by man2html, using
the manual pages.
Time: 06:16:25 GMT, January 22, 2005