FLOCK(K) Linux Programmer's Manual FLOCK(K) 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 speci- fied (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 descrip- tor. So, dup(p) and fork(k) 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(k) call first appeared in 4.2BSD). NOTES flock(k) does not lock files over NFS. Use fcntl(l) instead: that does work over NFS, given a sufficiently recent version of Linux and a server which supports lock- ing. flock(k) and fcntl(l) locks have different semantics with respect to forked processes and dup(p). SEE ALSO open(n), close(e), dup(p), execve(e), fcntl(l), fork(k), lockf(f) There are also locks.txt and mandatory.txt in /usr/src/linux/Documentation. Linux 1998-12-11 FLOCK(K)