你能解释为什么在命令行输入Ctrl + C时bash不会退出吗? - 检查终端上的退出状态? - 如果退出状态返回非零,则认为错误的提交并返回非零值
答案 0 :(得分:1)
当您键入Ctrl + C时,它会向进程发送中断信号SIGINT
。您可以使用kill -2 <process-id>
命令执行相同的操作。
对于交互式bash shell,它捕获SIGINT
并通过中断任何正在执行的循环来处理它。您可以阅读更多相关信息here
您可以为大多数脚本或程序添加信号处理程序。唯一不可忽视的信号是SIGKILL
(9)信号。这将永远停止一个过程。这就是为什么你总能用kill -9杀死一些东西。
答案 1 :(得分:0)
您可以使用陷阱语法来处理这些信号。例如,在退出之前捕获Ctrl + C并清理,可以这样做:
#!/bin/bash
function cleanup {
# cleanup whatever needed
echo "cleanup"
exit
}
trap cleanup SIGINT
while true; do
echo "Working"
sleep 10
done
exit