Opening with ">" truncates the file. Since flock is and advisory lock (at least on Unix), it won't stop the second process from doing this. See open or "perldoc -f open".

I tend to check for the file's existance first and then use "+<$file" if it's there and ">$file" if it's not. I think this is sloppy though since there is probably a race condition since the filecheck and the open occur at two different times (i.e. the file may come into existance between the file check and the open() call if another process was running at the same time). If the lock file is never really deleted after it is first, this probably isn't a problem.

I'd suggest using sysopen with O_RDWR | O_CREAT and then truncating the file yourself just before you perform the write.

bluto


In reply to Re: Re: Re: Writing to flock files in a daemon by bluto
in thread Writing to flock files in a daemon by graq

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.