signalについて

Version:1.0 of 2012/05/04
Author:SUZUKI Masashi / masasuzu
Mail:m15.suzuki.masashi@gmail.com

signalとは何か

IPCのことを書く。

signalの種類

自分のシステムで使えるsignalは”kill -l”で確認できます。

TODO:テーブルで書く

SIGHUP

多くのデーモンプログラムで設定ファイルを再読込するようプロセスに通知するために使用されます。

SIGINT

キー入力による割り込み。

SIGTERM

できる限り正常終了しようとする。

SIGKILL

強制終了

SIGALRM

タイマー割り込み

PerlでのSignalハンドリング

%SIG変数にハンドリング関数を定義します。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
use strict;
use warnings;
use feature qw( say state );

sub signal_defined_proc {
    my $cb = shift;
    local $SIG{HUP} = sub {
        warn '握りつぶすよ';
    };

    local $SIG{INT} = sub {
        warn '1秒待って死ぬよ';
        sleep 1;
        die  'さようなら';
    };

    local $SIG{ALRM} = sub {
        warn 'アラームを受け取ったよ';
    };
    $cb->();
}

sub normal_proc {
    my $cb = shift;
    $cb->();
}

my $cb = sub {
    state $i;
    alarm 5;
    say ++$i and sleep 1 for 1..10;
};

say 'シグナル定義した場合';
signal_defined_proc($cb);

say 'デフォルトの場合';
normal_proc($cb);

Table Of Contents

Previous topic

Watch Your Server

Next topic

独書メモ

This Page