我正在写一些perl脚本,我想利用信号随时执行某些例程。我看到整个地方都能打印出信号是什么,
perl -e 'foreach (keys %SIG) { print "$_\n" }'
我已经使用“INT”转到使用ctrl + c激活的子程序。
我无法找到任何关键组合与其他信号相关联的地方。某个地方有名单吗?我写的脚本应该适用于mac和linux计算机。
我知道ctrl + c信号在系统之间是类似的,perl中可以使用哪些“信号”以及哪些键激活它们?
答案 0 :(得分:2)
其他什么"信号"可以在perl中使用
这些是Perl识别的信号名称:
$ perl -V:sig_name
sig_name='ZERO HUP INT QUIT ILL TRAP ABRT BUS FPE KILL USR1 SEGV USR2 PIPE ALRM TERM STKFLT CHLD CONT STOP TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF WINCH IO PWR SYS NUM32 NUM33 RTMIN NUM35 NUM36 NUM37 NUM38 NUM39 NUM40 NUM41 NUM42 NUM43 NUM44 NUM45 NUM46 NUM4 NUM48 NUM49 NUM50 NUM51 NUM52 NUM53 NUM54 NUM55 NUM56 NUM57 NUM58 NUM59 NUM60 NUM61 NUM62 NUM63 RTMAX IOT CLD POLL UNUSED ';
上面的列表也可以从Config.pm' s $Config{sig_name}
获得。
还有两个伪信号,__WARN__
和__DIE__
。
以及哪些键激活它们?
以下信号通常是为响应终端输入而发送的:
您可以使用以下内容查看这些绑定的键:
$ stty -a | perl -ne'
$b{$1}=$2 while /\b(intr|quit|susp|stop|start)\s*=\s*([^\s;]+)/g;
END {
print "SIGINT: $b{intr}\n";
print "SIGQUIT: $b{quit}\n";
print "SIGTSTP: $b{susp}\n";
print "SIGSTOP: $b{stop}\n";
print "SIGCONT: $b{start}\n";
}
'
SIGINT: ^C
SIGQUIT: ^\
SIGTSTP: ^Z
SIGSTOP: ^S
SIGCONT: ^Q
大多数信号都不会因终端输入而发送。以下是常用信号以及通常导致它们发送的信息:
alarm
发送。