处理信号后,Perl进程崩溃

时间:2014-11-24 19:21:40

标签: perl signals daemon

我正在尝试在SIGHUP上为简单的perl守护进程重新读取配置文件。 我正在尝试

use sigtrap qw/handler rereadconf HUP/;

但执行“rereadconf”程序后,程序停止 我也在尝试

%SIG{HUP} = \&rereadconf;
sub rereadconf{
.... mycode
print "procedure executed\n";
};

但执行程序程序停止后结果相同。 那么如何在信号处理后让该过程继续执行呢?

1 个答案:

答案 0 :(得分:0)

您的程序退出,因为accept返回false,因为它被信号打断了。你想要

while (1) {
    my $client = $srv->accept();
    if (!$client) {
        next if $!{EINTR};
        die(sprintf(STDERR "[%s] accept: %s\n", basename($0), $!));
    }

    print(STDERR "accepted new client\n");
    serve_client($client);
}