scc

simple c99 compiler
git clone git://git.simple-cc.org/scc
Log | Files | Refs | Submodules | README | LICENSE

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