1 # node-lockfd
   2 
   3 A trivial wrapper around `fcntl(F_SETLK)` (or `F_SETLKW`).  Presently allows
   4 a synchronous or asynchronous call to get a whole-file, exclusive, advisory
   5 write lock on a file, or to block until one is possible.
   6 
   7 This module has been crafted specifically to work on SmartOS, and may not work
   8 anywhere else.  Please see [fcntl(2)](http://illumos.org/man/2/fcntl) for more
   9 details on the locking semantics.  In general, the lock will be released when
  10 either the file descriptor is closed, or the process exits.  The manual page
  11 contains information on exceptions to this behaviour.
  12 
  13 ## Usage
  14 
  15 ### lockfd(fd, callback)
  16 
  17 Will attempt to lock the open file descriptor `fd` as described above.  Once
  18 the lock is acquired, or an error condition manifests, `callback(err)` will be
  19 called.
  20 
  21 ### lockfdSync(fd)
  22 
  23 Synchronous version of `lockfd(fd)`.
  24 
  25 ## Examples
  26 
  27 ```javascript
  28 var mod_fs = require('fs');
  29 var mod_lockfd = require('lockfd');
  30 
  31 var fd = mod_fs.openSync('/tmp/.lockfile', 'r+');
  32 console.error('open fd %d', fd);
  33 
  34 console.error('locking file...');
  35 mod_lockfd.lockfdSync(fd);
  36 console.log('locked.');
  37 
  38 /*
  39  * Do work...
  40  */
  41 
  42 mod_fs.closeSync(fd);
  43 process.exit(0);
  44 ```
  45 
  46 ## License
  47 
  48 MIT.