trap "echo got signal" USR1

for try in 1 2 3 4 5; do
    kill -USR1 $$
    sleep 0.2
    echo "sent $try signal"
done &

# Ensure "wait" has something to wait for
sleep 2 &

# Ensure we do not execute "trap" below before "kill -USR1" above
# (was getting failure on loaded machine without this)
sleep 0.1

sleeping=true
while $sleeping; do
    trap
    if wait %%; then
        echo "sleep completed"
        sleeping=false
    elif [ $? = 127 ]; then
        echo "BUG: no processes to wait for?!"
        sleeping=false
    else
        echo "wait interrupted"
    fi
done