Provided by: manpages-es-dev_4.13-4_all bug

NOMBRE

       fopen, fdopen, freopen - funciones de apertura de flujos

SINOPSIS

       #include <stdio.h>

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

   Requisitos de Macros de Prueba de Características para glibc (véase feature_test_macros(7)):

       fdopen(): _POSIX_C_SOURCE

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.

       The argument mode points to a  string  beginning  with  one  of  the  following  sequences
       (possibly followed by additional characters, as described below):

       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+     Open for reading and appending (writing at end of file).  The file is created if it
              does not exist.  Output is always appended to the end of the file.  POSIX is silent
              on  what the initial read position is when using this mode.  For glibc, the initial
              file  position  for  reading  is  at  the  beginning   of   the   file,   but   for
              Android/BSD/MacOS, the initial file position for reading is at the end of the file.

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

       See NOTES below for details of glibc extensions for mode.

       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(3)  o  fgetpos(3)  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 modo) 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);

       The  file descriptor associated with the stream is opened as if by a call to open(2)  with
       the following flags:

              ┌─────────────┬───────────────────────────────┐
              │fopen() modeopen() flags                  │
              ├─────────────┼───────────────────────────────┤
              │     r       │ O_RDONLY                      │
              ├─────────────┼───────────────────────────────┤
              │     w       │ O_WRONLY | O_CREAT | O_TRUNC  │
              ├─────────────┼───────────────────────────────┤
              │     a       │ O_WRONLY | O_CREAT | O_APPEND │
              ├─────────────┼───────────────────────────────┤
              │     r+      │ O_RDWR                        │
              ├─────────────┼───────────────────────────────┤
              │     w+      │ O_RDWR | O_CREAT | O_TRUNC    │
              ├─────────────┼───────────────────────────────┤
              │     a+      │ O_RDWR | O_CREAT | O_APPEND   │
              └─────────────┴───────────────────────────────┘
   fdopen()
       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.

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

       If  the  pathname argument is a null pointer, freopen()  changes the mode of the stream to
       that specified in mode; that is, freopen() reopens the pathname that  is  associated  with
       the  stream.   The  specification  for  this behavior was added in the C99 standard, which
       says:

              In this case, the file descriptor associated with the stream need not be closed  if
              the  call  to  freopen()   succeeds.  It is implementation-defined which changes of
              mode are permitted (if any), and under what circumstances.

       The primary use of the freopen()  function  is  to  change  the  file  associated  with  a
       standard text stream (stderr, stdin, or stdout).

VALOR DEVUELTO

       Cuando  acaban bien, fopen(), fdopen() y freopen() devuelven un puntero a FILE. Cuando no,
       devuelven NULL y errno contiene un valor que indica el error.

ERRORES

       EINVAL El modo pasado a fopen(), fdopen() o 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).

ATRIBUTOS

       Para obtener una explicación de los términos usados en esta sección, véase attributes(7).

       ┌─────────────────────────────┬────────────────────┬───────────────────┐
       │InterfazAtributoValor             │
       ├─────────────────────────────┼────────────────────┼───────────────────┤
       │fopen(), fdopen(), freopen() │ Seguridad del hilo │ Multi-hilo seguro │
       └─────────────────────────────┴────────────────────┴───────────────────┘

CONFORME A

       fopen(), freopen(): POSIX.1-2001, POSIX.1-2008, C89, C99.

       fdopen(): POSIX.1-2001, POSIX.1-2008.

NOTAS

   Glibc notes
       The GNU C library allows the following extensions for the string specified in mode:

       c (desde glibc 2.3.3)
              Do not make the open operation, or subsequent read  and  write  operations,  thread
              cancellation points.  This flag is ignored for fdopen().

       e (desde glibc 2.7)
              Open  the  file  with the O_CLOEXEC flag.  See open(2)  for more information.  This
              flag is ignored for fdopen().

       m (desde glibc 2.3)
              Attempt to access the file using mmap(2), rather than I/O  system  calls  (read(2),
              write(2)).   Currently,  use  of  mmap(2)   is attempted only for a file opened for
              reading.

       x      Open the file exclusively (like the O_EXCL flag of open(2)).  If the  file  already
              exists,  fopen()   fails,  and  sets  errno  to  EEXIST.   This flag is ignored for
              fdopen().

       In addition to the above characters, fopen()  and freopen()  support the following  syntax
       in mode:

        ,ccs=cadena

       The given string is taken as the name of a coded character set and the stream is marked as
       wide-oriented.  Thereafter, internal conversion functions convert  I/O  to  and  from  the
       character   set   string.    If   the  ,ccs=string  syntax  is  not  specified,  then  the
       wide-orientation of the stream is  determined  by  the  first  file  operation.   If  that
       operation is a wide-character operation, the stream is marked wide-oriented, and functions
       to convert to the coded character set are loaded.

ERRORES

       When parsing for individual flag characters in mode (i.e., the  characters  preceding  the
       "ccs" specification), the glibc implementation of fopen() and freopen()  limits the number
       of characters examined in mode to 7 (or, in glibc versions before 2.14, to  6,  which  was
       not   enough   to  include  possible  specifications  such  as  "rb+cmxe").   The  current
       implementation of fdopen()  parses at most 5 characters in mode.

VÉASE TAMBIÉN

       open(2), fclose(3), fileno(3), fmemopen(3), fopencookie(3), open_memstream(3)

COLOFÓN

       Esta página es parte de la versión 5.10 del proyecto Linux man-pages. Puede encontrar  una
       descripción  del  proyecto, información sobre cómo informar errores y la última versión de
       esta página en https://www.kernel.org/doc/man-pages/.

TRADUCCIÓN

       La traducción al español de esta página del  manual  fue  creada  por  Gerardo  Aburruzaga
       García  <gerardo.aburruzaga@uca.es>,  Juan  Piernas  <piernas@ditec.um.es>  y Miguel Pérez
       Ibars <mpi79470@alu.um.es>

       Esta traducción es documentación libre; lea  la  GNU  General  Public  License  Version  3
       ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩  o posterior con respecto a las condiciones de
       copyright.  No existe NINGUNA RESPONSABILIDAD.

       Si encuentra algún error en la traducción de esta  página  del  manual,  envíe  un  correo
       electrónico a debian-l10n-spanish@lists.debian.org ⟨⟩.