.\" -*- coding: UTF-8 -*- .\" Copyright 1993, Rickard E. Faith .\" Copyright 2002, Michael Kerrisk .\" Copyright, the authors of the Linux man-pages project .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\" FIXME Maybe document LOCK_MAND, LOCK_RW, LOCK_READ, LOCK_WRITE .\" which only have effect for SAMBA. .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH flock 2 "8 Febrero 2026" "Linux man\-pages 6.18" .SH NOMBRE flock \- impone o elimina un bloqueo de recomendación en un archivo abierto. .SH BIBLIOTECA Biblioteca Estándar C (\fIlibc\fP,\ \fI\-lc\fP) .SH SINOPSIS .nf \fB#include \fP .P \fBint flock(int \fP\fIfd\fP\fB, int \fP\fIop\fP\fB);\fP .fi .SH DESCRIPCIÓN Aplica o elimina un bloqueo de aviso en el archivo abierto indicado por \fIfd\fP. El argumento \fIop\fP será uno de los siguientes: .RS 4 .TP 9 \fBLOCK_SH\fP Pone un bloqueo compartido. Más de un proceso puede tener un bloqueo compartido para un fichero en un momento dado. .TP \fBLOCK_EX\fP Pone un bloqueo exclusivo. Solamente un proceso puede tener un bloqueo exclusivo para un fichero en un momento dado. .TP \fBLOCK_UN\fP Elimina un bloqueo existente mantenido por este proceso. .RE .P Una llamada a \fBflock\fP() puede bloquearse si otro proceso mantiene un bloqueo incompatible. Para hacer una solicitud no bloqueante, incluya \fBLOCK_NB\fP (mediante operaciones \fIOR\fP) con cualquiera de las operaciones de arriba. .P Un fichero no puede tener simultaneamente bloqueo compartido y exclusivo. .P Los bloqueos creados por \fBflock\fP() se asocian a una descripción de archivo abierto (véase \fBopen\fP(2)). Esto significa que los descriptores de archivo duplicados (creados, por ejemplo, por \fBfork\fP(2) o \fBdup\fP(2)) hacen referencia al mismo bloqueo, y este puede modificarse o liberarse utilizando cualquiera de estos descriptores de archivo. Además, el bloqueo se libera mediante una operación \fBLOCK_UN\fP explícita en cualquiera de estos descriptores duplicados o cuando se han cerrado todos ellos. .P Si un proceso utiliza \fBopen\fP(2) (o similar) para obtener más de un descriptor de archivo para el mismo archivo, \fBflock\fP() tratará estos descriptores de archivo de forma independiente. Un intento de bloquear el archivo usando uno de estos descriptores de archivo puede ser denegado por un bloqueo que el proceso que realiza la llamada ya haya establecido mediante otro descriptor. .P Un proceso puede tener solamente un tipo de bloqueo (compartido o exclusivo) sobre un fichero. Las llamadas posteriores a \fBflock\fP() sobre un fichero ya bloqueado convertirán un bloqueo existente al nuevo modo de bloqueo. .P Los bloqueos creados con \fBflock\fP() se preservan tras un \fBexecve\fP(2). .P Un bloqueo compartido o exclusivo puede ponerse sobre un fichero sin importar el modo en el que fue abierto dicho fichero. .SH "VALOR DEVUELTO" En caso de éxito se devuelve cero. En caso de error se devuelve \-1, y \fIerrno\fP se configura para indicar el error. .SH ERRORES .TP \fBEBADF\fP \fIfd\fP no es un descriptor de archivos abiertos. .TP \fBEINTR\fP Mientras se esperaba por adquirir un bloqueo, la llamada fue interrumpida por la notificación de una señal atrapada por un manejador; vea \fBsignal\fP(7). .TP \fBEINVAL\fP \fIop\fP no es válido. .TP \fBENOLCK\fP El núcleo se quedó sin memoria para almacenar registros de bloqueos. .TP \fBEWOULDBLOCK\fP El fichero está encadenado y la bandera \fBLOCK_NB\fP ha sido elegida. TP \fBEBADF\fP \fIfd\fP no es un descriptor de fichero abierto. .SH VERSIONES .\" E.g., according to the flock(2) man page, FreeBSD since at least 5.3 A partir de Linux 2.0, \fBflock\fP() se implementa como una llamada al sistema por sí misma, en lugar de emularse en la biblioteca GNU C como una llamada a \fBfcntl\fP(2). Con esta implementación, no hay interacción entre los tipos de bloqueo establecidos por \fBflock\fP() y \fBfcntl\fP(2), y \fBflock\fP() no detecta interbloqueos. Sin embargo, cabe destacar que en algunos sistemas, como los BSD modernos, los bloqueos \fBflock\fP() y \fBfcntl\fP(2) \fIsi\fP interactúan entre sí. .SS "Detalles de CIFS" A partir de la versión 5.4, \fBflock\fP() no se despliega sobre SMB. Un archivo con estos bloqueos, no aparecerá bloqueado para usuarios remotos. .P A partir de Linux 5.5, los bloqueos \fBflock\fP() se emulan con bloqueos de rango de bytes SMB en todo el archivo. Al igual que en NFS, esto significa que los bloqueos \fBfcntl\fP(2) y \fBflock\fP() interactúan entre sí. Otra consecuencia importante es que los bloqueos ya no son consultivos: cualquier operación de E/S en un archivo bloqueado siempre fallará con \fBEACCES\fP cuando se realice desde un descriptor de archivo independiente. Esta diferencia se debe al diseño de los bloqueos en el protocolo SMB, que proporciona una sintaxis obligatoria de bloqueo. .P La sintaxis de bloqueo remoto y obligatorio puede variar según el protocolo SMB, las opciones de montaje y el tipo de servidor. Consulte \fBmount.cifs\fP(8) para obtener más información. .SH ESTÁNDARES BSD. .SH HISTORIAL 4.4BSD (la llamada al sistema \fBflock\fP() apareció por primera vez en 4.2BSD). Una versión de \fBflock\fP(), posiblemente implementada en términos de \fBfcntl\fP(2), aparece en la mayoría de UNIX's. .SS "Detalles de NFS" Hasta Linux 2.6.11, \fBflock\fP() no bloquea archivos en NFS (es decir, el alcance de los bloqueos se limitaba al sistema local). En su lugar, se podría usar el bloqueo de rango de bytes \fBfcntl\fP(2), que funciona en NFS, siempre que se cuente con una versión reciente de Linux y un servidor compatible con el bloqueo. .P A partir de Linux 2.6.12, los clientes NFS admiten bloqueos \fBflock\fP() emulándolos como bloqueos de rango de bytes \fBfcntl\fP(2) en todo el archivo. Esto significa que los bloqueos \fBfcntl\fP(2) y \fBflock\fP() interactúan entre sí en NFS. También significa que, para colocar un bloqueo exclusivo, el archivo debe estar abierto para escritura. .P .\" commit 5eebde23223aeb0ad2d9e3be6590ff8bbfab0fc2 Desde Linux 2.6.37, el núcleo admite un modo de compatibilidad que permite que los bloqueos \fBflock\fP(), y también los bloqueos de región de bytes \fBfcntl\fP(2) se traten como locales; consulte la explicación de la opción \fIlocal_lock\fP en \fBnfs\fP(5). .SH NOTAS \fBflock\fP() coloca bloqueos de recomendación solamente; con los permisos adecuados sobre un fichero, un proceso es libre de ignorar el uso de \fBflock\fP() y realizar E/S sobre el fichero. .P Los bloqueos \fBflock\fP() y \fBfcntl\fP(2) tienen una sintaxis diferente con respecto a los procesos bifurcados y \fBdup\fP(2). En sistemas que implementan \fBflock\fP() mediante \fBfcntl\fP(2), la sintaxis de \fBflock\fP() será diferente a la descrita en esta página de manual. .P .\" Kernel 2.5.21 changed things a little: during lock conversion .\" it is now the highest priority process that will get the lock -- mtk No se garantiza que la conversión de un bloqueo (compartido a exclusivo, o viceversa) sea en conjunto: primero se elimina el bloqueo existente y luego se establece uno nuevo. Entre estos dos pasos, puede concederse una solicitud de bloqueo pendiente de otro proceso, con el resultado de que la conversión se bloquea o falla si se definió \fBLOCK_NB\fP. (Este es el comportamiento original de BSD y sucede en muchas otras implementaciones). .P Release of a lock when a file descriptor is closed is not sequenced after all observable effects of \fBclose\fP(2). For example, if one process writes a file while holding an exclusive lock, then closes that file, and another process blocks placing a shared lock on that file to wait until it is closed, it may observe that a subsequent \fBexecve\fP(2) of that file fails with \fBETXTBSY\fP, and \fBumount\fP(2) of its underlying filesystem fails with \fBEBUSY\fP, as if the file were still open in the first process. .SH "VÉASE TAMBIÉN" \fBflock\fP(1), \fBclose\fP(2), \fBdup\fP(2), \fBexecve\fP(2), \fBfcntl\fP(2), \fBfork\fP(2), \fBopen\fP(2), \fBlockf\fP(3), \fBlslocks\fP(8) .P \fIDocumentation/filesystems/locks.rst\fP in the Linux kernel source tree .PP .SH TRADUCCIÓN La traducción al español de esta página del manual fue creada por Gerardo Aburruzaga García , Juan Piernas , Miguel Pérez Ibars y Marcos Fouces . .PP Esta traducción es documentación libre; lea la .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License Version 3 .UE o posterior con respecto a las condiciones de copyright. No existe NINGUNA RESPONSABILIDAD. .PP Si encuentra algún error en la traducción de esta página del manual, envíe un correo electrónico a .MT debian-l10n-spanish@lists.debian.org .ME .