Provided by: manpages-es-dev_4.21.0-2_all bug

NOMBRE

       flock - impone o elimina un bloqueo de recomendación en un archivo abierto.

BIBLIOTECA

       Biblioteca Estándar C (libc, -lc)

SINOPSIS

       #include <sys/file.h>

       int flock(int fd, int operation);

DESCRIPCIÓN

       Impone  o  elimina  un bloqueo de recomendación (advisory lock) sobre el fichero abierto especificado por
       fd.  El parámetro operation puede tener uno de los siguientes valores:

           LOCK_SH  Pone un bloqueo compartido.  Más de un proceso puede tener un  bloqueo  compartido  para  un
                    fichero en un momento dado.

           LOCK_EX  Pone  un  bloqueo  exclusivo.  Solamente un proceso puede tener un bloqueo exclusivo para un
                    fichero en un momento dado.

           LOCK_UN  Elimina un bloqueo existente mantenido por este proceso.

       Una llamada a flock()  puede bloquearse si otro proceso mantiene un bloqueo incompatible.  Para hacer una
       solicitud no bloqueante, incluya LOCK_NB (mediante operaciones OR) con cualquiera de las  operaciones  de
       arriba.

       Un fichero no puede tener simultaneamente bloqueo compartido y exclusivo.

       Locks  created  by  flock()  are associated with an open file description (see open(2)).  This means that
       duplicate file descriptors (created by, for example, fork(2)  or dup(2))  refer to  the  same  lock,  and
       this  lock  may  be  modified  or released using any of these file descriptors.  Furthermore, the lock is
       released either by an explicit LOCK_UN operation on any of these duplicate file descriptors, or when  all
       such file descriptors have been closed.

       If  a process uses open(2)  (or similar) to obtain more than one file descriptor for the same file, these
       file descriptors are treated independently by flock().  An attempt to lock the file using  one  of  these
       file  descriptors  may  be  denied by a lock that the calling process has already placed via another file
       descriptor.

       Un proceso puede tener solamente un tipo de bloqueo (compartido  o  exclusivo)  sobre  un  fichero.   Las
       llamadas  posteriores  a flock()  sobre un fichero ya bloqueado convertirán un bloqueo existente al nuevo
       modo de bloqueo.

       Los bloqueos creados con flock()  se preservan tras un execve(2).

       Un bloqueo compartido o exclusivo puede ponerse sobre un fichero sin importar  el  modo  en  el  que  fue
       abierto dicho fichero.

VALOR DEVUELTO

       En  caso de éxito se devuelve cero. En caso de error se devuelve -1, y errno se configura para indicar el
       error.

ERRORES

       EBADF  fd no es un descriptor de archivos abiertos.

       EINTR  Mientras se esperaba por adquirir un bloqueo, la llamada fue interrumpida por la  notificación  de
              una señal atrapada por un manejador; vea signal(7).

       EINVAL operation no es válido.

       ENOLCK El núcleo se quedó sin memoria para almacenar registros de bloqueos.

       EWOULDBLOCK
              El  fichero está encadenado y la bandera LOCK_NB ha sido elegida.  TP EBADF fd no es un descriptor
              de fichero abierto.

ESTÁNDARES

       4.4BSD (la llamada al sistema flock()  apareció por primera vez en  4.2BSD).   Una  versión  de  flock(),
       posiblemente implementada en términos de fcntl(2), aparece en la mayoría de UNIX's.

NOTAS

       Since  Linux 2.0, flock()  is implemented as a system call in its own right rather than being emulated in
       the GNU C library as a call to fcntl(2).  With this implementation, there is no interaction  between  the
       types  of  lock  placed by flock()  and fcntl(2), and flock()  does not detect deadlock.  (Note, however,
       that on some systems, such as the modern  BSDs,  flock()   and  fcntl(2)   locks  do  interact  with  one
       another.)

       flock()   coloca  bloqueos  de  recomendación  solamente; con los permisos adecuados sobre un fichero, un
       proceso es libre de ignorar el uso de flock()  y realizar E/S sobre el fichero.

       flock()  and fcntl(2)  locks have different semantics with respect to forked processes  and  dup(2).   On
       systems  that  implement  flock()  using fcntl(2), the semantics of flock()  will be different from those
       described in this manual page.

       Converting a lock (shared to exclusive, or vice versa) is not guaranteed to be atomic: the existing  lock
       is first removed, and then a new lock is established.  Between these two steps, a pending lock request by
       another  process  may  be granted, with the result that the conversion either blocks, or fails if LOCK_NB
       was specified.  (This is the original BSD behavior, and occurs on many other implementations.)

   Detalles de NFS
       Up to Linux 2.6.11, flock()  does not lock files over NFS (i.e., the scope of locks was  limited  to  the
       local  system).   Instead,  one could use fcntl(2)  byte-range locking, which does work over NFS, given a
       sufficiently recent version of Linux and a server which supports locking.

       Since Linux 2.6.12, NFS clients support flock()  locks by emulating them as fcntl(2)  byte-range locks on
       the entire file.  This means that fcntl(2)  and flock()  locks do interact with one another over NFS.  It
       also means that in order to place an exclusive lock, the file must be opened for writing.

       Since Linux 2.6.37, the kernel supports a  compatibility  mode  that  allows  flock()   locks  (and  also
       fcntl(2)   byte  region  locks)  to  be  treated as local; see the discussion of the local_lock option in
       nfs(5).

   Detalles de CIFS
       A partir de la versión 5.4, flock() no se  despliega  sobre  SMB.  Un  archivo  con  estos  bloqueos,  no
       aparecerá bloqueado para usuarios remotos.

       Since  Linux 5.5, flock()  locks are emulated with SMB byte-range locks on the entire file.  Similarly to
       NFS, this means that  fcntl(2)   and  flock()   locks  interact  with  one  another.   Another  important
       side-effect  is  that  the  locks are not advisory anymore: any IO on a locked file will always fail with
       EACCES when done from a separate file descriptor.  This difference originates from the design of locks in
       the SMB protocol, which provides mandatory locking semantics.

       Remote and mandatory locking semantics may vary with SMB protocol, mount options and  server  type.   See
       mount.cifs(8)  for additional information.

VÉASE TAMBIÉN

       flock(1), close(2), dup(2), execve(2), fcntl(2), fork(2), open(2), lockf(3), lslocks(8)

       Documentation/filesystems/locks.txt  in  the  Linux  kernel source tree (Documentation/locks.txt in older
       kernels)

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>, Miguel Pérez Ibars <mpi79470@alu.um.es>
       y Marcos Fouces <marcos@debian.org>

       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.

Páginas de manual de Linux 6.03                 4 Diciembre 2022                                        flock(2)