in reply to Background forked processes from a function.

You are forking, you are doing your query in the child. The child then exits. The wait is never reached. It's in the code path of the child, but after the exit. The parent will never wait.

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.

  • Comment on Re: Background forked processes from a function.