in reply to subroutines which forks?

I don't think waitpid() is useful here since I don't know the order which the jobs will finish.
So what? If you have to wait for John, Mary, Bob and Ellen, does it really matter that while you're waiting for John, Bob and Mary arrive, waiting their turn in the queue to be ticked of your list?

Just waitpid for all the pids in some order. If a child has finished before you've waited for it, waitpid returns instantly.

However, now that I think about it more critically, this is obviously flawed b/c wait() waits for any child process, not necessarily those that were spawned by the subroutine.
This suggests that elsewhere in the program you're forking children as well, and not waiting for them (or at least, not waiting for it now) before forking and waiting in the subroutine you're describing.

Replies are listed 'Best First'.
Re^2: subroutines which forks?
by ikegami (Patriarch) on Sep 10, 2010 at 16:06 UTC

    So what? If you have to wait for John, Mary, Bob and Ellen, does it really matter that while you're waiting for John, Bob and Mary arrive, waiting their turn in the queue to be ticked of your list?

    It often does. It you do something in response to your children finishing (such as cleaning up resources or starting on the next work unit), those actions would be delayed.