You could have the child hold a lock on the file. Have the parent try to get the lock after noticing that the child has touched it through stat. The blocking flock call will effectively sleep until it obtains the lock. The -M $file test operator may be tidier than direct use of stat.

use Fcntl qw(:flock); #... # Child does { open my $foo, '+<', $file or die $!; flock $foo, LOCK_EX | LOCK_NB or die $!; # Reading and Writing close $foo or die $!; } # child goes on... # Parent does sleep 1 while 1 < -M $file; { open my $foo, '<', $file or die $!; flock $foo, LOCK_EX or die $!; sleep 1; unless (kill 0, $child_pid) { # close file, restart child, and redo } # do stuff close $foo or die $!; }

The child uses non-blocking flock to break the narrow race window between parent and child, occuring between open and flock.

Alternatively, you could have the child raise a signal when it's done.

After Compline,
Zaxo


In reply to Re: waiting until a file updates... by Zaxo
in thread waiting until a file updates... by cLive ;-)

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.