in reply to Using a stack with fork()

Why not do:
while (host = pop array_of_hosts) { fork if child { work on host exit } }
Of course, this only gets work done, and kind of makes it difficult for the children to report back to the parent with results. If you want that functionality you probably want to make use of something like pipe or a piped open call.