>>>Всем здравствуйте. Есть проблема. У меня RH 9 По какой-то причине скрипт
>>>не желает демонизироваться. Я использую модуль Proc::Daemon Сам скрипт следующий
>>
>>Попробуй сделать попроще:
>>
>>#!/usr/bin/perl
>>
>>close STDIN;
>>close STDOUT;
>>close STDERR;
>>
>>while(1)
>>{
>> sleep(1);
>>}
>>
>>После этого сделай:
>>
>>prompt@host$ testdaemon &
>>
>>Можно ещё проще - ничего не закрывать, будет не намного хуже.
>
>А как же рожать потомков и управлять демоном?
Вот простая функция для перевода скрипта в дэмон. Отключаешься, забываешь а нем вообще - потом можешь придти и кильнуть его.
Принимает в качестве аргумента ссылку на хэш. Это кусок кода из IRC::Bot скрипта.
sub daemon {
my $self = shift;
my @fh = ( \*STDIN, \*STDOUT );
my $path;
$self->{'LogPath'} eq 'null' ? $path = $ENV{'HOME'} : $path =
$self->{'LogPath'};
open \*STDERR, ">$path/error.log";
select( ( select( \*STDERR ), $| = 1 )[0] );
my $ppid = $$;
my $pid = fork && exit 0;
!defined $pid && croak "No Fork: ", $!;
while ( kill 0, $ppid ) {
select undef, undef, undef, .001;
}
my $session_id = POSIX::setsid();
chdir '/' || croak "Could not cd to /", $!;
my $oldmask = umask 00;
close $_ || croak $! for @fh;
}