带有键盘快捷键的SIGTERM


Answers:


24

stty负责控制此操作,您可能已经有一个设置。您可以通过以下方式进行检查:

$ stty -e
speed 38400 baud; 53 rows; 225 columns;
lflags: icanon isig iexten echo echoe echok echoke -echonl echoctl
        -echoprt -altwerase -noflsh -tostop -flusho pendin -nokerninfo
        -extproc
iflags: -istrip icrnl -inlcr -igncr ixon -ixoff -ixany imaxbel -iutf8
        -ignbrk brkint -inpck ignpar -parmrk
oflags: opost onlcr -oxtabs -onocr -onlret
cflags: cread cs8 -parenb -parodd -hupcl -clocal -cstopb -crtscts
        -dsrflow -dtrflow -mdmbuf
discard dsusp   eof     eol     eol2    erase   intr    kill    lnext   
^O      ^Y      ^D      <undef> <undef> ^?      ^C      ^U      ^V      
min     quit    reprint start   status  stop    susp    time    werase  
1       ^\      ^R      ^Q      ^@      ^S      ^Z      0       ^W      

最后几行看起来很熟悉,^ C = intr是您在问题中提到的那一行。您可以通过以下方法了解更多设置方法:

$ man stty

13
$ stty -eBSD,供Ubuntu使用$ stty -a,请参阅:intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D;
dukedave 2014年

1
我对挂起状态信号感兴趣,因此我想知道“状态”键“ ctrl- @”。那是信号吗?
Andrew Wolfe 2014年

1
快捷方式^\ 发送SIGQUIT
Ioannis Filippidis

17

我知道在终端内,Ctrl+ C键盘快捷键会将SIGINT信号发送到当前的前台进程。

您的知识有两点是错误的:

  1. 信号被发送到前台处理组
  2. 如果这是当时恰好配置的特殊字符,则只有CTRL+ C。(这是大多数现代系统上的默认设置,但从历史上看,它可能是DEL角色或其他东西。)

有没有一种方法可以设置键盘快捷方式来将SIGTERM或SIGKILL发送到当前进程?

不能。线路规程控制发送什么信号,这些信号是硬连线的。他们是(以标准的Unix) ,SIGHUPSIGINTSIGTTOUSIGTTINSIGQUITSIGTSTP。线学科没有其他人产生。


13

tty的可用信号集为SIGINTCtrl+ C),SIGTSTPCtrl+ Z)和SIGQUITCtrl+ \)。您可以为它们分配不同的字符,但这是唯一可用的信号。为了您的目的,您可以使用Ctrl+ \发送SIGQUIT,尽管它的作用类似于错误并默认情况下导致核心转储。您可以使用该stty命令查看和更改设置。


1
我不得不搜索很长时间才能再次找到Ctrl + \快捷键。非常感谢!这非常有用,因为当进程对Ctrl + C不响应时它仍然可以工作。
luator
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.