Apache has a somewhat complicated relationship with children. In order to handle this well, you'll want to use Apache::SubProcess and its "cleanup_for_exec" subroutine (in the newly forked child) to better cut the ties between the parent and the forked child.
in reply to fork problem
Also, if you're running under mod_perl, you'll want to be careful to make the child "CORE::exit", rather than just "exit", since, under mod_perl, exit is really just a signal to finish the request and return the (not dead!) process to the pool of processes waiting to accept new socket connections.
Not an editor command: Wq