oracular (3) funlockfile.3.gz

Provided by: manpages-es-dev_4.23.1-1_all bug

NOMBRE

       flockfile, ftrylockfile, funlockfile - bloqueo sobre el objeto FILE de stdio

BIBLIOTECA

       Biblioteca Estándar C (libc, -lc)

SINOPSIS

       #include <stdio.h>

       void flockfile(FILE *filehandle);
       int ftrylockfile(FILE *filehandle);
       void funlockfile(FILE *filehandle);

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

       A continuación se muestran todas las funciones:
           /* Since glibc 2.24: */ _POSIX_C_SOURCE >= 199309L
               || /* glibc <= 2.23: */ _POSIX_C_SOURCE
               || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE

DESCRIPCIÓN

       Las funciones stdio son hilo-seguro. Ésto se consigue asignando a cada objeto FILE una cuenta de bloqueos
       (lockcount) y (si la cuenta es distinta de cero) un hilo que actúa de propietario. Por cada llamada a  la
       biblioteca,  estas funciones esperan hasta que el objeto FILE deje de estar bloqueado por algún otro hilo
       diferente, después lo bloquean, realizan la petición de E/S solicitada, y desbloquean el objeto de nuevo.

       (Nota: este bloqueo no tiene nada  que  ver  con  el  bloqueo  realizadopor  funciones  como  flock(2)  y
       lockf(3).)

       Todo  ésto  es  invisible  al  programador  de C, pero puede haber dos razones para querer un control más
       detallado. Por una parte, una serie de acciones de E/S de un hilo pueden ir juntas,  y  no  deberían  ser
       interrumpidas  por la E/S de ningún otro hilo. Por otra parte, la sobrecarga del bloqueo debería evitarse
       para lograr una mayor eficiencia.

       Para este propósito, un hilo puede bloquear explícitamente el objeto FILE, realizar su serie de  acciones
       de  E/S, y después desbloquearlo. Ésto impide que otros hilos lo interrumpan. Si la razón para hacer esto
       es lograr una mayor eficiencia, se debe realizar la E/S con las versiones no-bloqueantes de las funciones
       stdio: con getc_unlocked(3) y putc_unlocked(3) en lugar de getc(3) y putc(3).

       La  función  flockfile()  espera  a  que  *filehandle deje de estar bloqueado por otro hilo, hace al hilo
       actual propietario de *filehandle, e incrementa la cuenta de bloqueos.

       La función funlockfile() decrementa la cuenta de bloqueos.

       La función ftrylockfile() es una versión no-bloqueante de flockfile(). No hace nada en  el  caso  de  que
       otro  hilo sea el propietario de *filehandle, en otro caso obtiene la propiedad e incrementa la cuenta de
       bloqueos.

VALOR DEVUELTO

       La función ftrylockfile() devuelve cero cuando tiene éxito (obtuvo el bloqueo), y un  valor  distinto  de
       cero en caso de fallo.

ERRORES

       Ninguno.

ATRIBUTOS

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

       ┌───────────────────────────────────────────────────────────────┬────────────────────┬───────────────────┐
       │InterfazAtributoValor             │
       ├───────────────────────────────────────────────────────────────┼────────────────────┼───────────────────┤
       │flockfile(), ftrylockfile(), funlockfile()                     │ Seguridad del hilo │ Multi-hilo seguro │
       └───────────────────────────────────────────────────────────────┴────────────────────┴───────────────────┘

ESTÁNDARES

       POSIX.1-2008.

HISTORIAL

       POSIX.1-2001.

       Estas funciones están disponibles cuando _POSIX_THREAD_SAFE_FUNCTIONS está definida.

VÉASE TAMBIÉN

       unlocked_stdio(3)

TRADUCCIÓN

       La traducción al español de esta página del manual fue creada por 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⟩.