我注意到当我像这样通过 bash 脚本运行挂起进程时
foo.sh:
sleep 999
如果我通过命令运行它,然后按 Ctrl+C
./foo.sh
^C
sleep 会被打断。但是,当我尝试用 SIGINT 杀死它时
ps aux | grep foo
kill -INT 12345 # the /bin/bash ./foo.sh process
然后看起来 bash 和 sleep 忽略了 SIGINT 并继续运行。这让我很吃惊。我认为 Ctrl + C 实际上是将 SIGINT 发送到前台进程,那么为什么终端中的 Ctrl + C 和 kill -INT 的行为不同?
最佳答案
CtrlC 实际上发送 SIGINT
到前台进程 group (它由一个 bash
进程,以及一个 sleep
进程)。要使用 kill
命令执行相同操作,请将信号发送到进程组,例如:
kill -INT -12345
关于linux - 为什么 SIGINT 可以在终端中停止 bash 而不是通过 kill -INT?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24950251/