If you can't use nohup for some reason then you can still "daemonize" your script.
Someone mentioned POSIX::setsid() - I have had good luck with using the following subroutine:
sub daemonize {
my $childpid;
if(($childpid = fork()) < 0) {
die("can't fork: $!");
} elsif($childpid > 0) {
exit(0); # parent - exits
}
(setpgrp() != -1) || die("Can't change process group: $!");
$SIG{HUP} = 'IGNORE';
if(($childpid = fork()) < 0) {
die("can't fork: $!");
} elsif($childpid > 0) {
exit(0); # parent - exits
}
chdir("/");
umask(0);
}
This code was borrowed from Stevens' "Unix Network Programming" - a book that should be in every programmers bookshelf...
Michael
|