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 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197
|
.\" Hey Emacs! This file is -*- nroff -*- source.
.\"
.\" Copyright 1993 Rickard E. Faith (faith@cs.unc.edu) and
.\" 2002 Michael Kerrisk
.\"
.\" Permission is granted to make and distribute verbatim copies of this
.\" manual provided the copyright notice and this permission notice are
.\" preserved on all copies.
.\"
.\" Permission is granted to copy and distribute modified versions of this
.\" manual under the conditions for verbatim copying, provided that the
.\" entire resulting derived work is distributed under the terms of a
.\" permission notice identical to this one
.\"
.\" Since the Linux kernel and libraries are constantly changing, this
.\" manual page may be incorrect or out-of-date. The author(s) assume no
.\" responsibility for errors or omissions, or for damages resulting from
.\" the use of the information contained herein. The author(s) may not
.\" have taken the same level of care in the production of this manual,
.\" which is licensed free of charge, as they might when working
.\" professionally.
.\"
.\" Formatted or processed versions of this manual, if unaccompanied by
.\" the source, must acknowledge the copyright and authors of this work.
.\"
.\" Modified Fri Jan 31 16:26:07 1997 by Eric S. Raymond <esr@thyrsus.com>
.\" Modified Fri Dec 11 17:57:27 1998 by Jamie Lokier <jamie@imbolc.ucc.ie>
.\" Modified 24 Apr 2002 by Michael Kerrisk <mtk16@ext.cannterbury.ac.nz>
.\" Substantial rewrites and additions
.\" Translation fixed on Tue Apr 28 16:34:06 CEST 1998 by Gerardo
.\" Aburruzaga García <gerardo.aburruzaga@uca.es>
.\" Translation revised on Sun Apr 4 1999 by Juan Piernas <piernas@ditec.um.es>
.\" Revisado por Miguel Pérez Ibars <mpi79470@alu.um.es> el 11-noviembre-2004
.\"
.TH FLOCK 2 "24 abril 2002" "Linux" "Manual del Programador de Linux"
.SH NOMBRE
flock \- impone o elimina un candado de recomendación en un fichero abierto.
.SH SINOPSIS
.B #include <sys/file.h>
.sp
.BR "int flock(int " fd ", int " operation );
.SH DESCRIPCIÓN
Impone o elimina un candado de recomendación (advisory lock) sobre el fichero
abierto especificado por
.IR fd .
El parámetro
.I operation
puede tener uno de los siguientes valores:
.RS
.sp
.TP 1.0i
.B LOCK_SH
Pone un candado compartido.
Más de un proceso puede tener un candado compartido para un fichero en un
momento dado.
.TP
.B LOCK_EX
Pone un candado exclusivo.
Solamente un proceso puede tener un candado exclusivo para un fichero en un
momento dado.
.TP
LOCK_UN
Elimina un candado existente mantenido por este proceso.
.sp
.RE
Una llamada a
.BR flock ()
puede bloquearse si otro proceso mantiene un candado incompatible.
Para hacer una solicitud no bloqueante, incluya
.B LOCK_NB
(mediante operaciones
.IR OR)
con cualquiera de las operaciones de arriba.
Un fichero no puede tener simultaneamente candados compartido y exclusivo.
Los candados creados por
.BR flock ()
se asocian con un fichero, o, más concretamente, con una entrada de la tabla
de ficheros abiertos. Esto significa que los descriptores de fichero duplicados
(creados con, por ejemplo,
.BR fork "(2) o " dup (2))
hacen referencia al mismo candado, y este candado puede ser modificado
o liberado usando cualquiera de estos descriptores.
Además, el candado es bloqueado bien por una operación
.B LOCK_UN
explícita sobre cualquiera de estos descriptores duplicados, o cuando
todos estos descriptores han sido cerrados.
Un proceso puede tener solamente un tipo de candado (compartido o exclusivo)
sobre un fichero.
Las llamadas posteriores a
.BR flock ()
sobre un fichero ya bloqueado convertirán un candado existente al nuevo
modo de bloqueo.
Los candados creados con
.BR flock ()
se preservan tras un
.BR execve (2).
Un candado compartido o exclusivo puede ponerse sobre un fichero sin importar
el modo en el que fue abierto dicho fichero.
.SH "VALOR DEVUELTO"
En caso de éxito, cero, En caso de error, \-1 , y
se pone en
.I errno
un código apropiado.
.SH ERRORES
.TP
.B EWOULDBLOCK
El fichero está encadenado y la bandera
.B LOCK_NB
ha sido elegida.
TP
.B EBADF
.I fd
no es un descriptor de fichero abierto.
.TP
.B EINTR
Mientras se esperaba por adquirir un candado, la llamada fue
interrumpida por la notificación de una señal atrapada por un manejador.
.TP
.B EINVAL
.I operation
no es válido.
.TP
.B ENOLCK
El núcleo se quedó sin memoria para almacenar registros de candados.
.\".SH NOTAS
.\"En linux,
.\".B flock
.\"está implementado como una llamada a
.\".BR fcntl .
.\"Por favor vease
.\".BR fcntl (2)
.\"para más detalles sobre errores.
.SH CONFORME A
4.4BSD (la llamada al sistema
.BR flock (2)
apareció por primera vez en 4.2BSD).
Una versión de
.BR flock (2),
posiblemente implementada en términos de
.BR fcntl (2),
aparece en la mayoría de Unix's.
.SH OBSERVACIONES
.BR flock (2)
no impone candados en ficheros sobre NFS. Use
.BR fcntl (2)
en su lugar: funcionará sobre NFS, dada una versión suficientemente reciente
de Linux y un servidor que soporte candados.
.PP
Desde la versión 2.0 del núcleo,
.BR flock (2)
está implementada como una llamada al sistema en lugar
de ser emulada en la biblioteca C de GNU como una llamada a
.BR fcntl (2).
Esto da verdadera semántica BSD:
no hay interacción entre los tipos de candado
colocados por
.BR flock (2)
y
.BR fcntl (2),
y
.BR flock (2)
no detecta interbloqueo.
.PP
.BR flock (2)
coloca candados de recomendación solamente; con los permisos adecuados sobre
un fichero, un proceso es libre de ignorar el uso de
.BR flock (2)
y realizar E/S sobre el fichero.
.PP
Los candados de
.BR flock (2)
y
.BR fcntl (2)
tienen semánticas diferentes con respecto a los procesos creados con fork y
con respecto a
.BR dup (2).
.SH "VÉASE TAMBIÉN"
.BR open (2),
.BR close (2),
.BR dup (2),
.BR execve (2),
.BR fcntl (2),
.BR fork (2),
.BR lockf (3)
También están
.I locks.txt
y
.I mandatory.txt
en
.IR /usr/src/linux/Documentation .
|