我知道在终端中,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 信号。
您的认识在两点上是不正确的:
- 信号发送到前台进程组。
- 只有当这是当时恰好配置的特殊字符时,它才是CTRL+。 (这是大多数现代系统的默认设置,但从历史上看,它可能是字符或其他东西。)C
DEL
有没有办法设置键盘快捷键来向当前进程发送 SIGTERM 甚至 SIGKILL?
否。线路规则控制发送哪些信号,这些信号是硬连线的。它们是(在标准 Unix 中)SIGHUP
、SIGINT
、SIGTTOU
、SIGTTIN
、SIGQUIT
和SIGTSTP
。线路规则不会生成其他信号。