Ctrl+C可以终止当前程序的执行,如果不希望Ctrl+C起作用,或者插入自己的处理程序,可以使用stty禁用该功能,或者使用trap捕获该信号,插入处理程序。
- 禁用
在bash脚本中插入如下命令即可:
stty intr undef
请注意,该命令同时把整个终端的设置都改掉,导致Ctrl+C对于其它程序也不能用,所以在你的程序末尾还要将Ctrl+C恢复,使用如下命令:
stty intr ^c
- 捕获
首先定义一个处理函数,比如cleans,用于捕获信号后的处理。
cleans() {
echo "user cancelled, exit... "
exit 1 #如果不希望退出的,该行就不用
}
然后使用trap捕获信号
trap "{ cleans; }" 1 2 3 6 9 15
花括号中是处理函数的名称,后面的数字是信号量的代号。使用man 7 signal命令可以查看各种信号量的代码,其中中断信号就是2.