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

GNU                                             21 Diciembre 2020                                       FOPEN(3)