2012年10月11日木曜日

開発環境

『初めてのPerl 第6版』(Randal L. Schwartz, Tom Phoenix, brian d foy 共著、近藤 嘉雪 訳、オライリー・ジャパン、2012年、ISBN978-4-87311-567-2) の16章(プロセス管理)、16.9(練習問題)4を解いてみる。

その他参考書籍

4.

コード(TextWrangler)

sample.pl

#!/usr/bin/env perl
use strict;
use warnings;
use utf8;
use 5.012;
binmode STDOUT, ':utf8';
binmode STDIN, ':utf8';

sub my_int_handler {
  print "INTシグナルを受け取ったのでプログラムを終了\n";
  exit;
}

sub my_usr1_handler{
  state $n = 1;
  print "usr1: ". $n . "回\n";
  $n += 1;
}

sub my_hup_handler{
  state $n = 1;
  print "hup: " . $n . "回\n";
  $n += 1;
}

for my $signal (qw(int usr1 hup)){
  $SIG{uc $signal} = "my_${signal}_handler";
}

while(1){}

入出力結果(Terminal)

$ ./sample.pl
usr1: 1回
hup: 1回
hup: 2回
usr1: 2回
INTシグナルを受け取ったのでプログラムを終了
$

Perlのワンライナーでシグナルを送信

入出力結果(Terminal)

$ perl -e 'kill USR1 => 65780'
$ perl -e 'kill HUP => 65780'
$ perl -e 'kill HUP => 65780'
$ perl -e 'kill USR1 => 65780'
$ perl -e 'kill INT => 65780'
$

0 コメント:

コメントを投稿