flock
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)