FLOCKFILE(3)

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

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

All functions shown above:
    /* 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).
Interfaz | Atributo | Valor
flockfile(), ftrylockfile(), funlockfile() | Seguridad del hilo | Multi-hilo seguro

CONFORME A
POSIX.1-2001, POSIX.1-2008.

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

VÉASE TAMBIÉN
unlocked_stdio(3)

COLOFÓN
Esta página es parte de la versión 5.11 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 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>..