Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 哪些组合键与信号相关_Linux_Macos_Perl_Signals - Fatal编程技术网

Linux 哪些组合键与信号相关

Linux 哪些组合键与信号相关,linux,macos,perl,signals,Linux,Macos,Perl,Signals,我正在编写一些perl脚本,我想随时利用信号执行某些例程。我看到到处都有打印信号的能力 perl -e 'foreach (keys %SIG) { print "$_\n" }' 我已经在用“INT”去访问一个子程序,它是用ctrl+c激活的 我在任何地方都找不到与其他信号相关联的按键组合。有什么清单吗?我正在编写的脚本应该可以在mac和linux计算机上运行 我知道系统之间的ctrl+c信号是类似的,perl中还可以使用哪些“信号”以及哪些键激活它们 perl中还可以使用哪些其他“信号”

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

perl -e 'foreach (keys %SIG) { print "$_\n" }'
我已经在用“INT”去访问一个子程序,它是用ctrl+c激活的

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

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

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 turg XCPU XFSZ VTALRM PROF wing IO PWR SYS numm32 numm33 RTMIN numm35 numm36 numm37 numm38 numm40 numm41 numm42 numm43 numm45 numm46 numm46 numm46 numm45 numm45 numm51 numm52 numm53 numm53 numm56 numm56 numm56 numm56 numm56 numm56 numm56 numm56 numm56NUM62 NUM63 RTMAX物联网CLD轮询未使用'

上面的列表也可以从Config.pm的
$Config{sig_name}
中获得

还有两个伪信号,
警告和
死亡

什么键可以激活它们

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

  • 信号
  • SIGQUIT是一个更“严肃”的SIGINT版本,它提供了一个核心转储
  • SIGTSTP将进程发送到后台
  • SIGSTOP是一个不可跟踪的信号,用于冻结进程
  • SIGCONT恢复由SIGSTOP冻结的进程
您可以使用以下命令查看绑定的键:

$ 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
  • 会话的终端断开连接时发送SIGHUP
  • 发送SIGTERM以请求进程退出
  • 西格尔不会被抓到。它被发送来强制终止一个进程
  • SIGCHLD在子项退出时发送
  • 信号由
    报警发送
  • 在使用闭合的读取端写入管道时发送SIGPPIPE

这听起来像是XY问题。你能更详细地解释一下你想做什么吗?