flock man page on DigitalUNIX

Man page or keyword search:  
man Server   12896 pages
apropos Keyword Search (all sections)
Output format
DigitalUNIX logo
[printable version]

flock(2)							      flock(2)

       flock - Apply or remove an advisory lock on an open file

       #include <sys/fcntl.h>

       int flock(
	       int filedes,
	       int operation );

       Specifies  a file descriptor returned by a successful open() or fcntl()
       function, identifying the file to which the lock is to  be  applied  or
       removed.	 Specifies one of the following constants for flock(), defined
       in the <sys/fcntl.h> file: Apply a shared  lock.	  Apply	 an  exclusive
       lock.   Do  not	block  when locking.  This value can be logically ORed
       with either LOCK_SH or LOCK_EX.	Remove a lock.

       The flock() function applies or removes an advisory lock	 on  the  file
       associated  with	 the  filedes  file  descriptor.  Advisory locks allow
       cooperating processes to perform consistent operations on files, but do
       not  guarantee  consistency  (that is, processes may still access files
       without using advisory locks, possibly resulting in inconsistencies).

       You can use the flock() function to coordinate a file's lock status  on
       local, CFS, and NFS file systems.

       The  locking  mechanism	allows	two  types  of locks: shared locks and
       exclusive locks. At any time multiple shared locks may be applied to  a
       file,  but at no time are multiple exclusive, or both shared and exclu‐
       sive, locks allowed simultaneously on a file.

       A shared lock may be upgraded to an exclusive  lock,  and  vice	versa,
       simply  by  specifying  the  appropriate lock type. This results in the
       previous lock being released and the new lock applied  (possibly	 after
       other processes have gained and released the lock).

       Requesting  a  lock on an object that is already locked normally causes
       the caller to be blocked until the lock may be acquired. If LOCK_NB  is
       included	 in  operation,	 then  this will not happen; instead, the call
       will fail and errno will be set to [EWOULDBLOCK].

       Locks are on files, not file descriptors. This means  that:  Locks  are
       not  inherited  by  a  child process resulting from a fork() call.  All
       locks associated with a file for a given process are removed  when  the
       process closes any file descriptor for that file.

       Processes that are blocked awaiting a lock may be awakened by signals.

       The  flock() interface is not part of any UNIX standard.	 Therefore, if
       you are designing and writing applications to be portable across	 plat‐
       forms,  you  should  use	 the fcntl() file locking interface instead of

       Upon successful completion, 0 (zero)  is	 returned.  Otherwise,	-1  is
       returned and errno is set to indicate the error.

       If the flock() function fails, errno may be set to one of the following
       values: The file is locked and the LOCK_NB option was  specified.   The
       filedes	argument is not a valid open file descriptor.  A signal inter‐
       rupted the flock() call.	 The operator is not valid.  The lock table is
       full. Too many regions are already locked.  The lock is blocked by some
       lock from another process. Putting the calling process to  sleep	 while
       waiting for that lock to become free would cause a deadlock.

       Functions: close(2), exec(2), fcntl(2), fork(2), open(2), lockf(3)


List of man pages available for DigitalUNIX

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
Vote for polarhome
Free Shell Accounts :: the biggest list on the net