使用键盘快捷键 SIGTERM

使用键盘快捷键 SIGTERM

我知道在终端中,Ctrl+C键盘快捷键会SIGINT向当前前台进程发送信号。有没有办法设置键盘快捷键来发送SIGTERM甚至SIGKILL向当前进程发送信号?我认为这可以节省我一些时间。

我在跑Ubuntu 11.04

答案1

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

答案2

tty 的可用信号集为SIGINT( Ctrl+ C)、SIGTSTP( Ctrl+ Z) 和SIGQUIT( Ctrl+ \)。您可以为它们分配不同的字符,但这些是唯一可用的信号。对于您的目的,您可能能够使用Ctrl+\发送SIGQUIT,尽管它表现得像一个错误并默认导致核心转储。您可以使用命令stty查看和更改设置。

答案3

我知道在终端里面,Ctrl+C键盘快捷键会向当前前台进程发送 SIGINT 信号。

您的认识在两点上是不正确的:

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

有没有办法设置键盘快捷键来向当前进程发送 SIGTERM 甚至 SIGKILL?

否。线路规则控制发送哪些信号,这些信号是硬连线的。它们是(在标准 Unix 中)SIGHUPSIGINTSIGTTOUSIGTTINSIGQUITSIGTSTP。线路规则不会生成其他信号。

答案4

虽然你可以用以下方式编辑你的按键绑定stty -a,无法创建与您的进程交互的SIGTERM或键绑定。SIGKILL

阅读更多内容这里

相关内容