加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

Linux:如何杀死睡眠

发布时间:2020-12-14 01:28:38 所属栏目:Linux 来源:网络整理
导读:更多的概念性问题.如果我写一个类似的东西的bash脚本 control_c(){echo goodbyeexit #$}trap control_c SIGINTwhile truedosleep 10 #user wants to kill process here.done 当睡眠10运行时,控制c不会退出.是因为linux sleep忽略了SIGINT吗?有没有办法绕过
更多的概念性问题.如果我写一个类似的东西的bash脚本

control_c()
{
echo goodbye
exit #$
}

trap control_c SIGINT

while true
do
sleep 10 #user wants to kill process here.
done

当睡眠10运行时,控制c不会退出.是因为linux sleep忽略了SIGINT吗?有没有办法绕过这个并让用户能够从睡眠中cntrl c?

解决方法

您所描述的内容与仅针对您的bash脚本而不是进程组的中断信号一致.您的脚本会获取信号,但睡眠不会,因此您的陷阱在睡眠完成后才能执行.标准技巧是在后台运行睡眠并等待它,以便等待接收中断信号.您还应该明确地将SIGINT发送到仍在运行的任何子进程,以确保它们退出.

control_c()
{
echo goodbye
kill -SIGINT $(jobs -p)
exit #$
}

trap control_c SIGINT

while true
do
sleep 10 &
wait
done

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读