.\" Copyright 1997 Nicolás Lichtmaier .\" Created Thu Aug 7 00:44:00 ART 1997 .\" .\" This is free documentation; you can redistribute it and/or .\" modify it under the terms of the GNU General Public License as .\" published by the Free Software Foundation; either version 2 of .\" the License, or (at your option) any later version. .\" .\" The GNU General Public License's references to "object code" .\" and "executables" are to be interpreted as the output of any .\" document formatting or typesetting system, including .\" intermediate and printed output. .\" .\" This manual is distributed in the hope that it will be useful, .\" but WITHOUT ANY WARRANTY; without even the implied warranty of .\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the .\" GNU General Public License for more details. .\" .\" Added section stuff, aeb, 2002-04-22. .\" .\" Traducido por Miguel Pérez Ibars el 6-agosto-2004 .\" .TH LOCKF 3 "22 abril 2002" "Linux 2.0" "Manual del Programador de Linux" .SH NOMBRE lockf \- aplica, comprueba o elimina un bloqueo POSIX sobre un fichero abierto .SH SINOPSIS .B #include .sp .BR "int lockf(int " fd ", int " cmd ", off_t " len ); .SH DESCRIPCIÓN Aplica, comprueba o elimina un bloqueo POSIX sobre una sección de un fichero abierto. El fichero está especificado por .IR fd , un descriptor de fichero abierto para escritura, la acción por .IR cmd , y la sección consiste en las posiciones de byte .IR pos .. pos+len-1 , si .I len es positivo, y .IR pos-len .. pos-1 , si .I len es negativo, donde .I pos es la posición actual del fichero. Si .I 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. .LP En Linux, esta llamada es tan solo una interfaz para .BR fcntl (2). (En general, la relación entre .B lockf y .B fcntl es indefinida.) .LP Las operaciones válidas son: .TP .B 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. .TP .B F_TLOCK Igual que .B F_LOCK pero la llamada nunca se bloquea y devuelve un error en su lugar si el fichero ya está bloqueado. .TP .B F_ULOCK Desbloquea la sección indicada del fichero. Ésto puede provocar que una sección bloqueada se divida en dos secciones bloqueadas. .TP .B F_TEST Comprueba el bloqueo: devuelve 0 si la sección especificada está desbloqueada o bloqueada por este proceso; devuelve \-1 y asigna a .I errno el valor .B EACCES si otro proceso mantiene un bloqueo. .SH "VALOR DEVUELTO" En caso de éxito, se devuelve cero. En caso de error, se devuelve \-1 y se modifica .I errno apropiadamente. .SH ERRORES .TP .B EAGAIN El fichero está bloqueado y se especificó .B F_TLOCK o .BR F_TEST , o se prohibe la operación porque el fichero ha sido ubicado en memoria por otro proceso. .TP .B EBADF .I fd no es un descriptor de fichero abierto. .TP .B EDEADLK La orden fue .B T_LOCK y esta operación de bloqueo causaría una situación de interbloqueo. .TP .B EINVAL Se especificó una operación inválida en .IR fd . .TP .B ENOLCK Demasiados bloqueos de segmento abiertos, la tabla de bloqueos está llena. .SH "CONFORME A" SYSV, POSIX 1003.1-2001 .SH "VÉASE TAMBIÉN" .BR fcntl (2), .BR flock (2) .br Pueden encontrarse también los ficheros .I locks.txt y .I mandatory.txt en .IR /usr/src/linux/Documentation .