in reply to Creating Child without overhead of Parent

I might be wrong, but I don't think your double fork is doing you any good. On the contrary, on systems where you don't have the COW broquaint is talking about, you'll get even more overhead than you already had

The first fork() will duplicate the perl environment completely, and then the second fork() will duplicate that one. The first child being alive or not won't change any of that.

It might also help to elaborate a bit more on what you mean by overhead. Any extra memory used by the perl copy of the child will be released by the exec, so that's not something to worry about really. And at least on linux there's no timeslice penalty or anything like that for being the child of a resource hog.

  • Comment on Re: Creating Child without overhead of Parent

Replies are listed 'Best First'.
Re^2: Creating Child without overhead of Parent (double fork)
by jeffa (Bishop) on Jun 25, 2004 at 15:32 UTC

    Indeed, a double fork here is only needed if you need to collect the exit status of the child without having the server wait for the status. The server forks the child to do the work, but the child forks another child (grandchild), giving the actual work to that grandchild and instead carring the burden of idling instead of making the server idle. When the grandchild has finished the work, the child collects the status and sends it back to the server.

    jeffa

    L-LL-L--L-LL-L--L-LL-L--
    -R--R-RR-R--R-RR-R--R-RR
    B--B--B--B--B--B--B--B--
    H---H---H---H---H---H---
    (the triplet paradiddle with high-hat)