in reply to Keep a "system" process running if script is prematurely exited?

The following code to create a daemon may be useful (though e.g. you may want to leave your PATH alone).
use IO::Socket; use POSIX qw(WNOHANG setsid); sub daemonize { $SIG{CHLD} = 'IGNORE'; # Configure to autoreap zombies die "Can't fork" unless defined ( my $child = fork ); # FORK +<<<<<<<<<<<< CORE::exit(0) if $child; # Parent exits setsid(); # Become session leader open( STDIN, "</dev/null" ); # Detach STDIN from shell open( STDOUT, ">/dev/null" ); # Detach STDOUT from shell open( STDERR, ">&STDOUT" ); # Detach STDERR from shell chdir '/tmp'; # Change working directory umask(0); # Reset umask $ENV{PATH} = '/bin:/sbin:/usr/sbin'; # Reset PATH }

WARNING: Verify your system supports autoreaping of zombies!!!!!

You can read more in these threads: See also Re: Perl daemon that runs another daemon, Running Perl scripts from ssh, how to make a demon in perl?, and Persistent perl.

Elda Taluta; Sarks Sark; Ark Arks

  • Comment on Re: Keep a "system" process running if script is prematurely exited?
  • Download Code