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
In reply to Re: Keep a "system" process running if script is prematurely exited?
by Argel
in thread Keep a "system" process running if script is prematurely exited?
by westrock2000
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |