1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132
|
.\" Copyright 1997 Nicolás Lichtmaier <nick@debian.org>
.\" 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 <mpi79470@alu.um.es> 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 <sys/file.h>
.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 .
|