If you look at the
manual, you'll see that fork either returns the pid (and spawns a child) or undef if the fork was unsuccessful causing the code after the
unless to finally execute, i.e. whenever the system is being sufficiently thrashed to get an undef() back from fork. Note also the conditions under which the manual states that
zombies will be
accumulated. The OP code meets the criteria for a zombie factory of von Neumann proportions. In fact the intended functionality only gets executed whenever there is a spawn error and sufficient spawn errors are generated to cause "unless" to function precisely because this code is thrashing the machine enough to cause such errors in turn enough to cause the branches with execs to be executed approximately in parallel, because the spawn error cirmsumstances will occur simultaneously of course. Furthermore, the OPs actual symptoms are explained by this analysis but conflict with yours.
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: |
| & | | & |
| < | | < |
| > | | > |
| [ | | [ |
| ] | | ] |
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.