Dear Monks,

In my Perl script I execute an external program via the system() function. Subsequently I process the output file of this program.

This works perfectly on my local machine but fails on NFS terminals because the output file is not readily available when Perl returns after the system() call due to a delay in writing files on this system. My script dies because it cannot open the output file.

To avoid this problem, my program sleeps while the output file doesn't -exist. Unfortunately, this approach is only half-solving my problem because sometimes the output file exists but its content is not written yet. In this case my script dies because the file is empty. To solve this problem again, my first idea was to check if the file is still opened by the external program, but I don't know how to test this with Perl.

What's the preferred way to test for open files? Maybe there's another approach to solve the whole problem? I hope somebody can help me.

Thanks in advance

 to.b

P.S: I use Perl 5.6.1 on UNIX.


In reply to Waiting for delayed output after system() by to.b

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.