I'm trying to catch the SIGUSR1
signal in a bash script that is sleeping via the sleep
command:
#!/bin/bash
trap 'echo "Caught SIGUSR1"' SIGUSR1
echo "Sleeping. Pid=$$"
while :
do
sleep 10
echo "Sleep over"
done
The signal trap works, but the message being echoed is not displayed until the sleep 10
has finished.
It appears the bash signal handling waits until the current command finished before processing the signal.
Is there a way to have it interrupt the running sleep
command as soon as it gets the signal, the same way a C program would interrupt the libc sleep()
function?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…