Provided by: manpages-es_1.55-10_all bug

NOMBRE

       lockf - aplica, comprueba o elimina un bloqueo POSIX sobre un fichero abierto

SINOPSIS

       #include <sys/file.h>

       int lockf(int fd, int cmd, off_t len);

DESCRIPCIÓN

       Aplica,  comprueba o elimina un bloqueo POSIX sobre una sección de un fichero abierto.  El
       fichero está especificado por fd, un descriptor de  fichero  abierto  para  escritura,  la
       acción  por cmd, y la sección consiste en las posiciones de byte pos..pos+len-1, si len es
       positivo, y pos-len..pos-1, si len es negativo,  donde  pos  es  la  posición  actual  del
       fichero.  Si  len  es cero, la sección se extiende desde la posición actual del fichero al
       infinito, abarcando las posiciones actual y futura de  «fin  de  fichero».  En  todos  los
       casos, la sección se puede extender más alla del «fin de fichero» actual.

       En  Linux,  esta llamada es tan solo una interfaz para fcntl(2).  (En general, la relación
       entre lockf y fcntl es indefinida.)

       Las operaciones válidas son:

       F_LOCK Establece un bloqueo exclusivo en la sección especificada del fichero.   Si  (parte
              de)  esta  sección  ya  está  bloqueada, la llamada se bloquea hasta que el bloqueo
              anterior sea liberado.  Si esta sección  se  solapa  con  una  sección  previamente
              bloqueada,  ambas  se  fusionan.   Los  bloqueos sobre el fichero son liberados tan
              pronto como el proceso que mantiene los bloqueos  cierre  algunos  descriptores  de
              fichero para el fichero.  Un proceso hijo no hereda estos bloqueos.

       F_TLOCK
              Igual  que  F_LOCK pero la llamada nunca se bloquea y devuelve un error en su lugar
              si el fichero ya está bloqueado.

       F_ULOCK
              Desbloquea la sección indicada del fichero.  Ésto puede provocar  que  una  sección
              bloqueada se divida en dos secciones bloqueadas.

       F_TEST Comprueba  el  bloqueo:  devuelve  0 si la sección especificada está desbloqueada o
              bloqueada por este proceso; devuelve -1 y asigna a errno el valor  EACCES  si  otro
              proceso mantiene un bloqueo.

VALOR DEVUELTO

       En  caso  de éxito, se devuelve cero. En caso de error, se devuelve -1 y se modifica errno
       apropiadamente.

ERRORES

       EAGAIN El fichero está bloqueado y se  especificó  F_TLOCK  o  F_TEST,  o  se  prohibe  la
              operación porque el fichero ha sido ubicado en memoria por otro proceso.

       EBADF  fd no es un descriptor de fichero abierto.

       EDEADLK
              La  orden  fue  T_LOCK  y  esta  operación  de  bloqueo  causaría  una situación de
              interbloqueo.

       EINVAL Se especificó una operación inválida en fd.

       ENOLCK Demasiados bloqueos de segmento abiertos, la tabla de bloqueos está llena.

CONFORME A

       SYSV, POSIX 1003.1-2001

VÉASE TAMBIÉN

       fcntl(2), flock(2)
       Pueden   encontrarse   también    los    ficheros    locks.txt    y    mandatory.txt    en
       /usr/src/linux/Documentation.