.\" 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 .\" Modified Fri Dec 11 17:57:27 1998 by Jamie Lokier .\" Modified 24 Apr 2002 by Michael Kerrisk .\" Substantial rewrites and additions .\" Translation fixed on Tue Apr 28 16:34:06 CEST 1998 by Gerardo .\" Aburruzaga García .\" Translation revised on Sun Apr 4 1999 by Juan Piernas .\" Revisado por Miguel Pérez Ibars 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 .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 .