我试图SIGUSR1
通过sleep
命令在正在睡眠的bash脚本中捕获信号:
#!/bin/bash
trap 'echo "Caught SIGUSR1"' SIGUSR1
echo "Sleeping. Pid=$$"
while :
do
sleep 10
echo "Sleep over"
done
Run Code Online (Sandbox Code Playgroud)
信号陷阱有效,但回显的信息sleep 10
在完成之前不会显示.
看起来bash信号处理在处理信号之前等待当前命令完成.
有没有办法sleep
让它在获得信号后立即中断运行命令,就像C程序中断libc sleep()
功能一样?