There's nothing going wrong, just your expectations are a little off. When you fork, you are spinning off all new, real, full programs. They execute (almost) independently of your initial program. Ever heard the phrase 'fork and exec'? It's how you start a daemon.

So in your case, everything happens the way it should. However, one of your forked children prints after your parent program quits. You weren't expecting this, but it is fine.

You are slightly confused because you expect your command shell to wait until all the children finish before giving you a command prompt. However command shells only wait for their immediate children to exit. They can't know about their childrens children ( how could your program find out if the children it makes make their own children?)

You should be waiting for your children to exit, but the consequence of not waiting is zombie processes, not out-of-order output.

____________________
Jeremy
I didn't believe in evil until I dated it.


In reply to Re: Understanding how to fork properly. by jepri
in thread Understanding how to fork properly. by c

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.