AFAIK using fcntl to lock a file on an NFS partition either does not work at all, or is extremely iffy.

Personally I've used the technique described in Stevens' Unix Network Programming, which goes something like this:

Create a temp file on the NFS partition
Try to link this temp file to a lock file (using the link() call)
If the link fails with EEXIST someone else already has the lock, so sleep for a bit and try again
If the link succeeds you've got your lock, so delete the tempfile
Releasing a lock is simply a matter of deleting the lock file.

As lock files don't get automatically cleaned up you in case of abnormal termination you have to add some form of timeout and stale lock handling.

All in all I'd say that the NFSlock module suggested above is probably the best solution (unless you want to roll your own to work around new module installation issues...)

Michael


In reply to Re: Re: Re: locking a NFS file by mpeppler
in thread locking a NFS file by Helter

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.