在bash中,如何在不停止脚本的情况下捕获和处理SIGINT?

时间:2014-01-19 00:35:52

标签: bash signals sigint

看起来像是

trap on_sigint SIGINT

只要抓住SIGINT就停止脚本。然后,执行on_sigint。 是否可以在不停止脚本的情况下处理SIGINT

1 个答案:

答案 0 :(得分:6)

处理程序运行后,

SIGINT不会终止脚本。这是一个小型,独立的测试用例:

trap on_sigint SIGINT
on_sigint() { echo "caught"; }

{ sleep 3; kill -SIGINT $$; } &

echo "Waiting for sigint"
sleep 5
echo "Still running"

输出结果为:

Waiting for sigint
caught
Still running

如果您的观察结果是正确的,那么最后一行就不会出现。