BASH - 捕获Ctrl+C以在退出之前清理进程

3

我想在脚本中捕获 Control + C,以便在退出脚本之前可以进行一些清理工作。目前我的代码如下:

trap ctrl_c INT

main_script() {
   #State of the art technology happening here
}

ctrl_c() {
   #Do some cleaning
   exit 1
}

问题是,我按下Control + C并返回到控制台后,控制台行为异常。我不能再看到我的键盘输入,按Enter键也无法进入新行。例如,这是我的控制台的样子:

root@ZonkedCream:~# root@ZonkedCream:~# root@ZonkedCream:~#

请求帮助。
1个回答

2
我们没有你的脚本源代码,所以......只是猜测。
可能你的脚本会以某种方式更改stty设置,并且当你使用CTRL-C中断应用程序时它们没有被恢复。
我建议你在脚本启动时立即保存你的stty标志,并在ctrl_c()函数中恢复它们,或者至少在退出之前在ctrl_c()中使用stty sane

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接