in reply to Background forked processes from a function.
I don't see where you parent is waiting. In fact, after the fork, the parent does nothing; at least, not in the code you are showing.
What you want is a loop that forks of all the children; then when that is done, you wait for your children to finish. Or, if you don't really care about their exit status, you can set $SIG{CHLD} to ignore, or just have the parent exit, and let init reap the children.
|
|---|