Roboticus -

Thanks very much for your swift answer.

I had tried with and without the line, and no difference. I've just tried again to be quite sure.

My understanding of fork at the OS level is that file descriptors in the parent are dup()'d to the child. The child has to close the fd or at least not move it by reading from it.

It's almost as if when I issue close() perl is repositioning the file pointer before close()ing at the OS level.

If I get rid of the close(), I still have the problem, so maybe exit() does it implicitly

INTERESTING:

If I change exit(0) to:

exec /bin/false
(so that I get _exit below decks instead of perl's wrapped exit(),) IT WORKS!!

So I think perl is fiddling with file descriptors in the child in its exit function.

If I then restore the explicit close(), the problem returns!!

So perl close() is altering the position in the file via the child's file descriptor.

I wonder whether that happens on Solaris, Linux, Aix - I've only HPUX to look at.

Regards, Abe


In reply to Re^2: HPUX corruption of file handle after fork by Abe
in thread HPUX corruption of file handle after fork by Abe

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.