in reply to Listening without forking

Does the message handling need to be synchronous? I'm not sure if this is useful in your context, but if it can be used asynchronously,perhaps you could have the parent and the child sharea message queue, and establish a Producer/Consumer relationship

So the child would be listening to all incoming requests. When the child gets something, it writes the request to the queue. The parent would check the queue for any available messages, and does the processing.

At least this way you get to detatch the actual processing with the peer interaction.