1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
|
#!/usr/bin/env newlisp
#
# check out customized signal handlers
#
# USAGE: qa-setsig <low-bound> <high-bound>
#
# example: qa-setsig 1 8
#
# checks all signals between 1 and 8
#
# run without arguments for testing 1-8, 10-16
#
# USAGE: qa-setsig
#
(println)
(println "Testing signals")
(when (find ostype '("Windows"))
(println "Cannot run qa-signal on this platform because uses 'fork'")
(exit))
(set 'low (int (main-args 2)))
(set 'high (int (main-args 3)))
(set 'pid (sys-info -3))
(if low
(println "low=" low " hight=" high " pid=" pid))
(define (alarm sig)
(if (= sig high) (set 'done true))
(print "sig-" sig " ")
(push sig result-list -1)
)
(if (and low high)
(set 'sig-list (sequence low high))
(set 'sig-list (append (sequence 1 8) (sequence 10 16))))
(set 'high (last sig-list))
(dolist (s sig-list) (signal s alarm))
(fork (begin
(dolist (s sig-list)
(sleep 200)
(destroy pid (int s)))
(sleep 200)
; (destroy pid 9)
))
(println)
(while (not done) (print ".") (sleep 100))
(println)
(println "sent: " sig-list)
(println "received: " result-list)
(println)
(if (= result-list sig-list)
(println ">>>>> Signal testing SUCCESSFUL")
(println ">>>>> PROBLEM in signal TESTING"))
(println)
(exit)
|