FLOCK

NAME
SYNOPSIS
DESCRIPTION
RETURN VALUE
ERRORS
CONFORMING TO
NOTES
SEE ALSO

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 /usr/src/linux/Documentation.