開発環境
- macOS Catalina - Apple (OS)
- Emacs (Text Editor)
- Windows 10 Pro (OS)
- Strawberry Perl (WindowsのPerlの言語処理系)
- Visual Studio Code (Text Editor)
- Perl 5.28 (プログラミング言語)
初めてのPerl 第7版 (Randal L. Schwartz(著)、brian d foy(著)、Tom Phoenix(著)、近藤 嘉雪(翻訳)、嶋田 健志(翻訳)、オライリージャパン)の15章(プロセス管理)、15.9(練習問題)4の解答を求めてみる。
コード
#!/usr/bin/env perl use strict; use warnings; use utf8; use v5.18; use Encode::Locale; binmode STDIN, ':encoding(console_in)'; binmode STDOUT, ':encoding(console_out)'; binmode STDERR, ':encoding(console_out)'; say '4.'; say "pid $$"; my @signals = split ' ', `kill -l`; open STDOUT, '>', 'signals.txt'; for (sort @signals) { my $sig_name = uc $_; $SIG{$sig_name} = sub { if ($sig_name eq 'INT') { exit; } state $n = 0; $n++; say "$sig_name: ${n}回目"; }; } while (1) {}
入出力結果(Zsh、cmd.exe(コマンドプロンプト)、Terminal)
% ./sample4.pl & [1] 94099 % 4. pid 94099 % kill -l HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM URG STOP TSTP CONT CHLD TTIN TTOU IO XCPU XFSZ VTALRM PROF WINCH INFO USR1 USR2 % kill -HUP 94099 % kill -HUP 94099 % kill -USR1 94099 % kill -USR2 94099 % kill -USR2 94099 % kill -TRAP 94099 % kill -TRAP 94099 % kill -USR2 94099 % kill -INT 94099 [1] + done ./sample4.pl % cat signals.txt HUP: 1回目 HUP: 2回目 USR1: 1回目 USR2: 1回目 USR2: 2回目 TRAP: 1回目 TRAP: 2回目 USR2: 3回目 %
0 コメント:
コメントを投稿