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.