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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |