FLOCK(2)            Linux Programmer's Manual            FLOCK(2)



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(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  lock-
       ing.




Linux                    11 December 1998                       1





FLOCK(2)            Linux Programmer's Manual            FLOCK(2)


       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),
       lockf(3).   There  are also locks.txt and mandatory.txt in
       /usr/src/linux/Documentation.


















































Linux                    11 December 1998                       2