linux - 哪些组合键与信号相关联

标签 linux macos perl signals

我正在编写一些 perl 脚本,我想利用信号随时执行某些例程。我到处都能看到打印出信号的能力,

perl -e 'foreach (keys %SIG) { print "$_\n" }'

而且我已经使用“INT”转到一个用 ctrl+c 激活的子程序。

我在任何地方都找不到与其他信号关联的组合键。某处有 list 吗?我正在编写的脚本应该可以在 mac 和 linux 计算机上运行。

我知道 ctrl+c 信号在系统之间是类似的,在 perl 中可以使用哪些其他“信号”以及哪些键可以激活它们?

最佳答案

what other "signals" can be utilized in 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 NUM34 NUM44 NUM40 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的$Config{sig_name}获取。

还有两个伪信号,__WARN____DIE__

and what keys activate them?

通常发送以下信号以响应终端输入:

  • 信号情报
  • SIGQUIT 是一个更“严肃”的 SIGINT 版本,它提供核心转储。
  • SIGTSTP 向后台发送进程。
  • SIGSTOP 是一个无法捕获的信号,它会卡住进程。
  • SIGCONT 恢复被 SIGSTOP 卡住的进程。

您可以使用以下命令查看这些绑定(bind)到什么键:

$ 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

大多数信号不是作为终端输入的结果发送的。以下是常用的信号以及通常导致它们发送的原因:

  • SIGSEGV 在程序执行非法操作时发送(通常是使用错误指针的结果)。
  • 当 session 的终端断开连接时发送 SIGHUP。
  • 发送 SIGTERM 以请求进程退出。
  • 无法捕获 SIGKILL。它被发送以强制终止进程。
  • SIGCHLD 在 child 退出时发送。
  • SIGALRM 由警报发送。
  • SIGPIPE 在写入具有封闭读取端的管道时发送。

关于linux - 哪些组合键与信号相关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35506817/

相关文章:

linux - Bash 脚本 (awk-sed-grep) 检查下一行中的数字是否比上一行多 1

cocoa - 获取另一个应用程序窗口的唯一 ID

c - Mac OS X 体系结构和命令行

Perl 日期时间减法问题

perl - 将变量分配给函数

c - 为什么在我有 16 GB RAM 的计算机上只能分配 2 GB?

linux - 绑定(bind) Monit 使用端口 443

c++ - fopen ("filename", "wb") 返回 null

linux - 我通过 cpan 安装了一个 perl 模块。但我该如何使用它?

linux - Rails 4 中客户端 cookie 值是如何生成的?