[Perl] $SIG{HUP}

Scenarios: 为daemon process重新加载配置
Solution: 可通过接收SIGHUP,并定义操作。如下实现了向 a daemon process 发送SIGHUP,并restart该process。当然,也可以是加载配置。

#!/usr/bin/perl
use strict;
use warnings;
use POSIX ();
use FindBin ();
use File::Basename ();
use File::Spec::Functions qw(catfile);

$| = 1;
# make the daemon cross-platform, so exec always calls the script
# itself with the right path, no matter how the script was invoked.
my $script = File::Basename::basename($0);
my $SELF  = catfile($FindBin::Bin, $script);
# POSIX unmasks the sigprocmask properly
$SIG{HUP} = sub {
    print "got SIGHUP\n";
    exec($SELF, @ARGV) || die "$0: couldn't restart: $!";
};

code();

sub code {
    print "PID: $$\n";
    print "ARGV: @ARGV\n";
    my $count = 0;
    while (1) {
        sleep 2;
        print ++$count, "\n";
}

Start a pty on your host, and run below daemon program:

[root@localhost tmp]# perl test_sighup.pl
PID: 27460
ARGV: 
1

Then start another pty, and send SIGHUP:

[root@localhost ~]# kill -1 27460

Back to the former pty, will see:

[root@localhost tmp]# perl test_sighup.pl
PID: 27460
ARGV: 
1
2
3
got SIGHUP

See also

SIGINT
SIGALRM
SIGCHLD

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值