http://qs321.pair.com?node_id=539124


in reply to Persistent perl

Sounds like you want to make it a daemon:
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 }
Note: Verify your system supports autoreapping of zombies.

You can read more in this thread.

Replies are listed 'Best First'.
Re^2: Persistent perl
by njcodewarrior (Pilgrim) on Mar 25, 2006 at 01:23 UTC

    Do I have to be the superuser/sysadmin to run the daemon?

      The code doesn't do anything special that other programs do not do for other reasons. Common things like manipulating filehandles, changing environment variables, and forking. There are no daemons under UNIX in the stict sense. It's just a concept, a term used to set expectations for the reader. So to answer your question any user can do it (though, other aspects of your program may require root).