Pegasus InfoCorp: Web site design and web software development company

FLOCK (2)

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