the exit value after termination is 141, which means nothing to me.

Then perhaps you should read about $? ?

If I change the print statement to print {$proc->st­din} "text\n" the it appears as if perl tries to run the statement twice!

No, it is just that in print {$proc->stdin} "text\n" there are two statements in that one line. The braces actually constitute a block and so $proc->stdin is a full statement, not just an expression. So the debugger stops for that statement first and then stops for the print statement after that.

But back to your primary question. The reason printing to a pipe usually causes a process to exit is because all readers of that pipe have now closed their handle (usually because they have exit()ed) and so the writing process gets sent SIGPIPE. This behavior should be mentioned briefly in "man 2 write" and should be covered more extensively by "man 7 pipe".

And your exit value confirms that this is the cause in your specific case.

- tye        


In reply to Re: Unexpected termination on "print" (pipe) by tye
in thread Unexpected termination on "print" by mlawren

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.