在bash中捕获键盘中断

时间:2013-09-20 09:25:49

标签: linux bash centos interrupt sigint

我在bash中有一个捕获键盘中断的函数。该函数如下所示:

user_interrupt(){
        echo -e "\n\nKeyboard Interrupt detected."
        sleep 2
        echo -e "\n Cleaning up..."
        rm -rf /usr/local/src/mysources
}

现在,在同一个脚本中,我有另一个名为install()的函数,它使用标准./configuremake,{{1}从源代码中依次安装一些软件包。过程。我们的想法是在一个接一个地运行3个安装时捕获用户中断。问题是,我在哪里发表以下声明:

make install

那么我应该将它作为trap user_interrupt SIGINT trap user_interrupt SIGTSTP 函数中的第一个语句吗?或者我需要install()条件吗?

1 个答案:

答案 0 :(得分:5)

我想在检测到用户中断后你想要exit(当然在完成清理行为之后)。如果是这样,您需要在函数中的exit行之后说出rm -rf ...。除非您这样做,trap将捕获信号SIGINT,例如,执行user_interrupt函数中的任务,脚本将继续执行。

要回答另一个问题,只需在脚本顶部定义您提到的功能,然后定义两个trap命令,然后再定义剩余代码(install()功能等等)。 trap将捕获所提到的信号,您不需要任何明确的处理。