http://www.perlmonks.org?node_id=624440


in reply to Re: How Can I Reliably Cleanup Sockets in a Backgrounded Program?
in thread How Can I Reliably Cleanup Sockets in a Backgrounded Program?

Thanks for the reply,
But i have absolouty no idea what you mean, could you please try to be a little more specific because i am a complete idiot

Kenny

Replies are listed 'Best First'.
Re^3: How Can I Reliably Cleanup Sockets in a Backgrounded Program?
by garu (Scribe) on Jul 02, 2007 at 15:25 UTC

    I believe Moron meant that your $SIG{CHILD} = 'IGNORE' instruction should be avoiding zombification of your children, but it's not, and that you should read perlipc for more information on how to build a reliable reaper for your dead processes. Something like (from perlipc itself):

    use POSIX ":sys_wait_h"; sub REAPER { my $child; while (($child = waitpid(-1,WNOHANG)) > 0) { $Kid_Status{$child} = $?; } $SIG{CHLD} = \&REAPER; # still loathe sysV } $SIG{CHLD} = \&REAPER; # do something that forks...

    But you should check with him, anyways :-)

    I myself don't think the nohup command will behave as you might expect, and you should look for daemonization solutions for your program to keep working even if you disconnect. Look for "Complete Dissociation of Child from Parent" again in perlipc.

    Hope this helps!

      Yes that is exactly what I meant on both counts - thanks for helping out - I wasn't sure exactly where to start elaborating when someone says they understand zero of what I am saying - it is probable that the OP didn't write the code he is presenting and so difficult to know at what level to start explaining.
      __________________________________________________________________________________