Hi,

Well, locking a file with flock() doesn't mean that a lock is actually created at the os level.

flock():
On many platforms (including most versions or clones of Unix), locks established by flock() are merely advisory. Such discretionary locks are more flexible, but offer fewer guarantees. This means that files locked with flock() may be modified by programs that do not also use flock(). Windows NT and OS/2 are among the platforms which enforce mandatory locking.

So, what you're seeing with the risk of corruption is really documented unfortunately.

Take a look at the File Locking Tutorial which will give you a solid base of how the locking is done

Also, take a look at the MTA program documentation. sendmail's locking scheme:
it does recognize its own locking system, which consists of a mboxname.lock file in the same directory as the mbox. -- ishamael (RE: File Locking)

update: Come to think of it, using a progname.lock locking mechanism on unix/linux is very common. Depending on the program you are interacting with (i.e. sendmail), you might be able to get away with flock, a .lock file or similar. You will have to research the program to determine if when the .lock file is created, does the program automatically assume that it can write to the file regardless if the program itself did not create the .lock file?

Hope this helps

Jason L. Froebe

Team Sybase member

No one has seen what you have seen, and until that happens, we're all going to think that you're nuts. - Jack O'Neil, Stargate SG-1


In reply to Re: 5.8, locking with IO::File and Fcntl by jfroebe
in thread 5.8, locking with IO::File and Fcntl by Anonymous Monk

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.