Unix基础编程

时间:2014-07-03 07:04:30

标签: unix

你能解释为什么在命令行输入Ctrl + C时bash不会退出吗? - 检查终端上的退出状态? - 如果退出状态返回非零,则认为错误的提交并返回非零值

2 个答案:

答案 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