FLOCK
Section: Linux Programmer's Manual (2)
Updated: 11 December 1998
NAME
flock - apply or remove an advisory lock on an open file
SYNOPSIS
#include <sys/file.h>
int flock(int fd, int operation)
DESCRIPTION
Apply or remove an advisory lock on an open file. The file is specified by
fd.
Valid operations are given below:
-
- LOCK_SH
-
Shared lock. More than one process may hold a shared lock for a given file
at a given time.
- LOCK_EX
-
Exclusive lock. Only one process may hold an exclusive lock for a given
file at a given time.
- LOCK_UN
-
Unlock.
- LOCK_NB
-
Don't block when locking. May be specified (by
or'ing)
along with one of the other operations.
A single file may not simultaneously have both shared and exclusive locks.
A file is locked (i.e., the inode),
not
the file descriptor. So,
dup(2)
and
fork(2)
do not create multiple instances of a lock.
RETURN VALUE
On success, zero is returned. On error, -1 is returned, and
errno
is set appropriately.
ERRORS
- EWOULDBLOCK
-
The file is locked and the
LOCK_NB
flag was selected.
CONFORMING TO
4.4BSD (the
flock(2)
call first appeared in 4.2BSD).
NOTES
flock(2)
does not lock files over NFS. Use
fcntl(2)
instead: that does work over NFS, given a sufficiently recent version of
Linux and a server which supports locking.
flock(2)
and
fcntl(2)
locks have different semantics with respect to forked processes and
dup(2).
SEE ALSO
open(2),
close(2),
dup(2),
execve(2),
fcntl(2),
fork(2).
There are also
locks.txt
and
mandatory.txt
in
/.us/src/linux/Documentation.