| 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 |