Provided by: manpages-es_1.55-3_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.