2015-04-27 4 views
4

В настоящее время я ищу для демонстрации скрипта perl. К сожалению, большинство ответов устарело, и я на самом деле совершенно не понимаю, как начать процесс демона (особенно скрипты perem daemon).Daemonize perl script

Сейчас я смотрю на Proc Daemon, но снова я не знаю, с чего начать, или нужно ли это делать с использованием или без использования модулей.

Я считаю, что если я приведу пример того, что я ищу, чтобы задать этот вопрос немного больше.

Пример

Скажите, что я нахожусь на OSX, и я хочу написать скрипт на языке Perl, который может работать как демон. Он реагирует на сигнал HUP, который затем переходит к печати содержимого из файла из определенного каталога. Если он получает сигнал USR1, он распечатывает контент по-разному. Каков наиболее подходящий способ сделать это как демон?

ответ

8

Это все, что вам нужно:

#!/usr/bin/perl 

use strict; 
use warnings; 

use Daemon::Daemonize qw(daemonize write_pidfile); 

sub sighup_handler { 
    ... 
} 

sub sigusr1_handler { 
    ... 
} 

{ 
    my $name   = "..."; 
    my $error_log_qfn = "/var/log/$name.log"; 
    my $pid_file_qfn = "/var/run/$name.pid"; 

    daemonize(
     close => 'std', 
     stderr => $error_log_qfn, 
    ); 

    $SIG{HUP} = \&sighup_handler; 
    $SIG{USR1} = \&sigusr1_handler; 

    write_pidfile($pid_file_qfn); 

    sleep while 1; 
} 
+0

Извините, но я не понимаю этот ответ. – MooCow

+0

Вот и вся запрошенная вами программа, минус код, который вы хотите исполнить в SIGHUP. Поместите этот код в 'sighup_handler'. Что ты не понимаешь? – ikegami

+0

Прошу прощения, я новичок в этом. Также как он будет реагировать на сигнал USR1. Или может быть не в sighup_handler? Я тоже буду использовать $ Sig {USR1} = тогда ссылка на функцию? – MooCow