use strict; use POSIX; my $die = 0; my $pid = fork; die "no fork\n" unless defined($pid); exit if $pid; close STDIN; open(STDOUT, '>>access.log'); open(STDERR, '>>error.log'); POSIX::setsid(); umask(0); print STDERR "daemon started as pid $$\n"; $SIG{INT} = sub { $die = 1; close STDERR; close STDOUT; }; $SIG{HUP} = sub { print STDOUT "HUP caught\n" }; until ($die) { sleep(2); }