Provided by: manpages-es_1.55-10_all bug

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ÓN

       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):

       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 añadir (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 añadir (escribir al final del fichero). El fichero se crea si no
              existe. El flujo se posiciona al final del fichero.

       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 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
       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.

       Abrir un fichero para añadir (a como primer  carácter  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 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).

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 válido.

       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).

CONFORME A

       Las funciones fopen y freopen son conformes con ANSI X3.159-1989 (``C ANSI'').  La función
       fdopen es conforme con IEEE Std1003.1-1988 (``POSIX.1'').

VÉASE TAMBIÉN

       open(2), fclose(3), fileno(3)