【发布时间】:2017-12-12 00:52:56
【问题描述】:
我正在尝试通过sleep 命令在休眠的 bash 脚本中捕获SIGUSR1 信号:
#!/bin/bash
trap 'echo "Caught SIGUSR1"' SIGUSR1
echo "Sleeping. Pid=$$"
while :
do
sleep 10
echo "Sleep over"
done
信号陷阱有效,但在 sleep 10 完成之前不会显示正在回显的消息。
看来 bash 信号处理会等到当前命令完成后再处理信号。
有没有办法让它在收到信号后立即中断正在运行的sleep 命令,就像C 程序中断libc sleep() 函数一样?
【问题讨论】: