In principle, the child of a fork inherits any open handles including sockets that the parent has has the time of the fork. So, you should only need to 'inform' the child which of a list of open handles is should not close before doing its stuff and it would use that to send its batch of work. The parent would still retain an open handle to that socket too.
The only thing that you would need to do is make sure that the parent doesn't attempt to write to the socket whilst the child is still alive. You could do this using a $SIG{CHLD} handler or waitpid under *nix, but might need to resort to using kill (with a signal value of 0 (zero)) under Win32 to determine when the child process has finished. Once the child is finished, the parent can go back to polling the open handle it retains to keep/verify the connection.
Did I misunderstand your question?
Examine what is said, not who speaks.
"Efficiency is intelligent laziness." -David Dunham
"When I'm working on a problem, I never think about beauty. I think only how to solve the problem. But when I have finished, if the solution is not beautiful, I know it is wrong." -Richard Buckminster Fuller
| [reply] |