0100-signal.sh (475B)
1 #!/bin/sh 2 3 cleanup() 4 { 5 rm -f test.txt 6 kill -KILL $pid 2>/dev/null 7 if test $1 -ne 0 8 then 9 kill -KILL $$ 10 fi 11 } 12 13 rm -f file.txt 14 trap 'cleanup 0' EXIT 15 trap 'cleanup 1' INT TERM HUP 16 17 scc make -f - test.txt <<'EOF' & 18 .PRECIOUS: test.txt 19 20 test.txt: 21 @touch $@ 22 @while : ; do sleep 1 ; done 23 EOF 24 pid=$! 25 26 sleep 10 && echo timeout >&2 && kill $$ 2>/dev/null & 27 timer=$! 28 29 while : 30 do 31 if test -f test.txt 32 then 33 kill $pid 34 wait $pid 35 kill $timer 36 break 37 fi 38 done 39 40 test -f test.txt