“ kill -INT $ pid”不会杀死进程,但是ctrl + c可以

时间:2019-08-09 03:41:40

标签: bash unix

我有一个基本的bash脚本,可以打印出其pid,然后计数为100:

echo $$
for i in {1..100}
do
    echo $i
    sleep 1
done

当我按ctrl + c并在运行时,该程序将退出,退出代码为130。我试图发送一个模拟ctrl + c的信号,并导致该程序暂停并退出并显示代码130。

当我在另一个终端窗口中键入“ kill -INT”时,什么也没有发生,尽管据我了解,它应该与按ctrl + c相同。但是,当我键入“ kill -9”时,尽管使用了不同的退出代码,我仍可以成功终止该程序。如何使用中断信号停止程序,使其以正确的代码退出?

1 个答案:

答案 0 :(得分:0)

使用带有破折号“-”的进程ID

kill -SIGINT -<pid>

这将终止退出代码为130的进程。

UPD:为什么不使用默认情况下由kill命令发送的SIGTERM(15)(没有信号编号或名称)?