はじめてのPerl 第6版 第16章 プロセス管理
うは!
unix では、終了値0はすべてがうまくいったことを示し、0以外の終了値は、何かが うまくいかなかったことを示します:
(中略)これは、ほとんどの演算子の通常の判断基準である「真は良いこと─ 偽は悪いこと」の正反 対なので、よく使われる“do this or die”(「これをしなさい、さもなくば die しなさい」)というス タイルで書く場合には、真と偽を入れ換えなければなりません。
汎用クォート演算子 qx()
- 逆クォートした時と同じ動きをする
fork
- 自作スクリプトがあまりに遅くて、試行錯誤のときにも考えたけど結局よく分からなかったfork
- この本でもよく分からなかった
- ま、勉強し続ければ、いずれ理解できて活用できる時が来るだろう
練習問題16-4
- state変数
- 受け取ったSIGNALに応じて呼び出すサブルーチン名を変える
- なるほどなぁ・・・
sub my_hup_handler { state $n; say 'Caught HUP:', ++$n } sub my_usr1_handler { state $n; say 'Caught USR1:', ++$n } sub my_usr2_handler { state $n; say 'Caught USR2:', ++$n } sub my_int_handler { state $n; say 'Caught INT.Exiting:'; exit } say "I am $$"; foreach my $signal (qw (int hup usr1 usr2)) { $SIG{ uc $signal } = "my_${signal}_handler"; } while (1) { sleep 1 }