1 # Test the signal module
2 from test
.test_support
import verbose
, TestSkipped
, TestFailed
6 if sys
.platform
[:3] in ('win', 'os2') or sys
.platform
=='riscos':
7 raise TestSkipped
, "Can't test signal on %s" % sys
.platform
15 # Shell script that will send us asynchronous signals
30 print "handlerA", args
32 class HandlerBCalled(Exception):
37 print "handlerB", args
38 raise HandlerBCalled
, args
40 signal
.alarm(20) # Entire test lasts at most 20 sec.
41 hup
= signal
.signal(signal
.SIGHUP
, handlerA
)
42 usr1
= signal
.signal(signal
.SIGUSR1
, handlerB
)
43 usr2
= signal
.signal(signal
.SIGUSR2
, signal
.SIG_IGN
)
44 alrm
= signal
.signal(signal
.SIGALRM
, signal
.default_int_handler
)
49 print "starting pause() loop..."
54 print "call pause()..."
58 print "pause() returned"
59 except HandlerBCalled
:
61 print "HandlerBCalled exception caught"
65 except KeyboardInterrupt:
67 print "KeyboardInterrupt (assume the alarm() went off)"
70 signal
.signal(signal
.SIGHUP
, hup
)
71 signal
.signal(signal
.SIGUSR1
, usr1
)
72 signal
.signal(signal
.SIGUSR2
, usr2
)
73 signal
.signal(signal
.SIGALRM
, alrm
)